1
2
3
4
5
6
7
8
9
10
11
12
13
14 package net.sf.appstatus.web.pages;
15
16 import static net.sf.appstatus.web.HtmlUtils.applyLayout;
17 import static net.sf.appstatus.web.HtmlUtils.generateBeginTable;
18 import static net.sf.appstatus.web.HtmlUtils.generateEndTable;
19 import static net.sf.appstatus.web.HtmlUtils.generateHeaders;
20 import static net.sf.appstatus.web.HtmlUtils.generateRow;
21 import static org.apache.commons.lang3.StringUtils.isNotBlank;
22
23 import java.io.IOException;
24 import java.io.UnsupportedEncodingException;
25 import java.util.HashMap;
26 import java.util.List;
27 import java.util.Map;
28
29 import javax.servlet.ServletOutputStream;
30 import javax.servlet.http.HttpServletRequest;
31 import javax.servlet.http.HttpServletResponse;
32
33 import org.apache.commons.lang3.text.StrBuilder;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
36
37 import net.sf.appstatus.core.loggers.ILoggersManager;
38 import net.sf.appstatus.core.loggers.LoggerConfig;
39 import net.sf.appstatus.web.StatusWebHandler;
40
41
42
43
44
45
46
47 public class LoggersPage extends AbstractPage {
48 private static final String ENCODING = "UTF-8";
49 private static final String LEVEL_ERROR = "ERROR";
50 private static final String LEVEL_INFO = "INFO";
51 private static final String LEVEL_TRACE = "TRACE";
52 private static final String LEVEL_WARN = "WARN";
53 private static final Logger LOGGER = LoggerFactory.getLogger(LoggersPage.class);
54 private static final String PAGECONTENTLAYOUT = "logContentLayout.html";
55
56 @Override
57 public void doGet(StatusWebHandler webHandler, HttpServletRequest req, HttpServletResponse resp)
58 throws UnsupportedEncodingException, IOException {
59 LOGGER.debug("doGet");
60 if (isNotBlank(req.getParameter("name")) && isNotBlank(req.getParameter("level"))) {
61 LoggerConfig logger2Change = new LoggerConfig(req.getParameter("name"), req.getParameter("level"));
62 LOGGER.debug("Change log level : {} - {}", logger2Change.getName(), logger2Change.getLevel());
63 webHandler.getAppStatus().getLoggersManager().update(logger2Change);
64 }
65 setup(resp, "text/html");
66 ServletOutputStream os = resp.getOutputStream();
67 Map<String, String> valuesMap = new HashMap<String, String>();
68
69 StrBuilder sbLoggersTable = new StrBuilder();
70 List<LoggerConfig> loggers = webHandler.getAppStatus().getLoggersManager().getLoggers();
71 if (generateBeginTable(sbLoggersTable, loggers.size())) {
72 generateHeaders(sbLoggersTable, "", "Name", "Levels", "", "", "", "");
73 for (LoggerConfig logger : loggers) {
74 generateRow(sbLoggersTable, Resources.STATUS_PROP, logger.getName(), getButton(LEVEL_TRACE, logger),
75 getButton(ILoggersManager.LEVEL_DEBUG, logger), getButton(LEVEL_INFO, logger),
76 getButton(LEVEL_WARN, logger), getButton(LEVEL_ERROR, logger));
77 }
78 generateEndTable(sbLoggersTable, loggers.size());
79 }
80
81 valuesMap.put("loggersTable", sbLoggersTable.toString());
82 valuesMap.put("loggerCount", String.valueOf(loggers.size()));
83 String content = applyLayout(valuesMap, PAGECONTENTLAYOUT);
84 valuesMap.clear();
85 valuesMap.put("content", content);
86
87 os.write(getPage(webHandler, valuesMap).getBytes(ENCODING));
88 }
89
90 @Override
91 public void doPost(StatusWebHandler webHandler, HttpServletRequest req, HttpServletResponse resp) {
92
93 }
94
95 private String getButton(String level, LoggerConfig logger) {
96 String buttonTypeTmp = "";
97 if (level.equals(logger.getLevel())) {
98 if (LEVEL_TRACE.equals(level)) {
99 buttonTypeTmp = "btn-info";
100 } else if (ILoggersManager.LEVEL_DEBUG.equals(level)) {
101 buttonTypeTmp = "btn-primary";
102 } else if (LEVEL_INFO.equals(level)) {
103 buttonTypeTmp = "btn-success";
104 } else if (LEVEL_WARN.equals(level)) {
105 buttonTypeTmp = "btn-warning";
106 } else if (LEVEL_ERROR.equals(level)) {
107 buttonTypeTmp = "btn-danger";
108 }
109 }
110 return "<a class='btn btn-mini " + buttonTypeTmp + "' href='?p=loggers&level=" + level + "&name="
111 + logger.getName() + "'>" + level + "</a>";
112 }
113
114 @Override
115 public String getId() {
116 return "loggers";
117 }
118
119 @Override
120 public String getName() {
121 return "Loggers";
122 }
123 }