1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.client.console.pages;
20
21 import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import java.util.Comparator;
25 import java.util.List;
26 import java.util.stream.Collectors;
27 import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
28 import org.apache.syncope.client.console.panels.LogsPanel;
29 import org.apache.syncope.client.console.rest.LoggerConf;
30 import org.apache.syncope.client.console.rest.LoggerConfOp;
31 import org.apache.syncope.client.console.rest.LoggerConfRestClient;
32 import org.apache.syncope.common.keymaster.client.api.DomainOps;
33 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
34 import org.apache.syncope.common.keymaster.client.api.model.Domain;
35 import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
36 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
37 import org.apache.wicket.extensions.markup.html.tabs.ITab;
38 import org.apache.wicket.markup.html.WebMarkupContainer;
39 import org.apache.wicket.markup.html.panel.Panel;
40 import org.apache.wicket.model.Model;
41 import org.apache.wicket.request.mapper.parameter.PageParameters;
42 import org.apache.wicket.spring.injection.annot.SpringBean;
43 import org.springframework.boot.logging.LogLevel;
44 import org.springframework.boot.logging.LoggerConfiguration;
45 import org.springframework.boot.logging.LoggingSystem;
46
47 public class Logs extends BasePage {
48
49 private static final long serialVersionUID = -1100228004207271271L;
50
51 @SpringBean
52 private ServiceOps serviceOps;
53
54 @SpringBean
55 private DomainOps domainOps;
56
57 @SpringBean
58 private LoggingSystem loggingSystem;
59
60 public Logs(final PageParameters parameters) {
61 super(parameters);
62
63 body.add(BookmarkablePageLinkBuilder.build("dashboard", "dashboardBr", Dashboard.class));
64 WebMarkupContainer content = new WebMarkupContainer("content");
65 content.setOutputMarkupId(true);
66 content.add(new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList()));
67 body.add(content);
68 }
69
70 private List<ITab> buildTabList() {
71 List<ITab> tabs = new ArrayList<>();
72
73 List<Domain> domains = domainOps.list();
74
75 List<NetworkService> coreInstances = serviceOps.list(NetworkService.Type.CORE);
76 tabs.add(new AbstractTab(Model.of(NetworkService.Type.CORE.name())) {
77
78 private static final long serialVersionUID = -6815067322125799251L;
79
80 @Override
81 public Panel getPanel(final String panelId) {
82 return new LogsPanel(panelId, new LoggerConfRestClient(coreInstances, domains), getPageReference());
83 }
84 });
85
86 tabs.add(new AbstractTab(Model.of(NetworkService.Type.CONSOLE.name())) {
87
88 private static final long serialVersionUID = -6815067322125799251L;
89
90 @Override
91 public Panel getPanel(final String panelId) {
92 return new LogsPanel(panelId, new LoggerConfOp() {
93
94 private static final long serialVersionUID = 24740659553491L;
95
96 @Override
97 public List<LoggerConf> list() {
98 Collection<LoggerConfiguration> configurations = loggingSystem.getLoggerConfigurations();
99 if (configurations == null) {
100 return List.of();
101 }
102
103 return configurations.stream().map(conf -> {
104 LoggerConf loggerConf = new LoggerConf();
105 loggerConf.setKey(conf.getName());
106 loggerConf.setLevel(conf.getEffectiveLevel());
107 return loggerConf;
108 }).sorted(Comparator.comparing(LoggerConf::getKey)).collect(Collectors.toList());
109 }
110
111 @Override
112 public void setLevel(final String key, final LogLevel level) {
113 loggingSystem.setLogLevel(key, level);
114 }
115 }, getPageReference());
116 }
117 });
118
119 List<NetworkService> euInstances = serviceOps.list(NetworkService.Type.ENDUSER);
120 if (!euInstances.isEmpty()) {
121 tabs.add(new AbstractTab(Model.of(NetworkService.Type.ENDUSER.name())) {
122
123 private static final long serialVersionUID = -6815067322125799251L;
124
125 @Override
126 public Panel getPanel(final String panelId) {
127 return new LogsPanel(panelId, new LoggerConfRestClient(euInstances, domains), getPageReference());
128 }
129 });
130 }
131
132 List<NetworkService> waInstances = serviceOps.list(NetworkService.Type.WA);
133 if (!waInstances.isEmpty()) {
134 tabs.add(new AbstractTab(Model.of(NetworkService.Type.WA.name())) {
135
136 private static final long serialVersionUID = -6815067322125799251L;
137
138 @Override
139 public Panel getPanel(final String panelId) {
140 return new LogsPanel(panelId, new LoggerConfRestClient(waInstances, domains), getPageReference());
141 }
142 });
143 }
144
145 List<NetworkService> sraInstances = serviceOps.list(NetworkService.Type.SRA);
146 if (!sraInstances.isEmpty()) {
147 tabs.add(new AbstractTab(Model.of(NetworkService.Type.SRA.name())) {
148
149 private static final long serialVersionUID = -6815067322125799251L;
150
151 @Override
152 public Panel getPanel(final String panelId) {
153 return new LogsPanel(panelId, new LoggerConfRestClient(sraInstances, domains), getPageReference());
154 }
155 });
156 }
157
158 return tabs;
159 }
160 }