logback.jsp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <%@page import="java.lang.management.*"%>
  2. <%@page import="java.util.*"%>
  3. <%@page import="javax.management.*"%>
  4. <%@page import="ch.qos.logback.classic.jmx.JMXConfiguratorMBean"%>
  5. <%
  6. MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
  7. ObjectName objectName = new ObjectName("ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator");
  8. JMXConfiguratorMBean jMXConfiguratorMBean = JMX.newMBeanProxy(mBeanServer, objectName, JMXConfiguratorMBean.class);
  9. String action = request.getParameter("action");
  10. if ("update".equals(action)) {
  11. String logger = request.getParameter("logger");
  12. String level = request.getParameter("level");
  13. jMXConfiguratorMBean.setLoggerLevel(logger, level);
  14. response.sendRedirect("logback.jsp");
  15. return;
  16. }
  17. %>
  18. <html>
  19. <head>
  20. <meta charset="utf-8">
  21. <title>logback</title>
  22. <style>
  23. tbody tr:nth-child(odd) td,
  24. tbody tr:nth-child(odd) th {
  25. background-color: #f9f9f9;
  26. }
  27. </style>
  28. <script>
  29. function $(id) {
  30. return document.getElementById(id);
  31. }
  32. function toggle(body) {
  33. if ($(body).style.display == '') {
  34. $(body).style.display = 'none';
  35. } else {
  36. $(body).style.display = '';
  37. }
  38. }
  39. function updateLoggerLevel(logger, level) {
  40. location.href = '?action=update&logger=' + logger + '&level=' + level;
  41. }
  42. </script>
  43. </head>
  44. <body>
  45. <table border="1" onclick="toggle('statusBody')" style="cursor:pointer;">
  46. <thead>
  47. <tr>
  48. <th>status</th>
  49. </tr>
  50. </thead>
  51. <tbody id="statusBody" style="display:none;">
  52. <tr>
  53. <td>
  54. <%
  55. List<String> statuses = jMXConfiguratorMBean.getStatuses();
  56. for (String status : statuses) {
  57. %>
  58. <%=status%><br>
  59. <%
  60. }
  61. %>
  62. </td>
  63. </tr>
  64. </tbody>
  65. </table>
  66. <form action="logback.jsp">
  67. <input type="hidden" name="action" value="update">
  68. <input type="text" name="logger" value="">
  69. <select name="level">
  70. <option value="null"></option>
  71. <option value="OFF">OFF</option>
  72. <option value="ERROR">ERROR</option>
  73. <option value="WARN">WARN</option>
  74. <option value="INFO">INFO</option>
  75. <option value="DEBUG" selected>DEBUG</option>
  76. <option value="TRACE">TRACE</option>
  77. <option value="ALL">ALL</option>
  78. </select>
  79. <input type="submit">
  80. </form>
  81. <table border="1">
  82. <caption onclick="toggle('loggerBody')" style="cursor:pointer;">logger</caption>
  83. <thead>
  84. <tr>
  85. <th>logger</th>
  86. <th>level</th>
  87. <th>&nbsp;</th>
  88. </tr>
  89. </thead>
  90. <tbody id="loggerBody">
  91. <%
  92. List<String> loggers = jMXConfiguratorMBean.getLoggerList();
  93. for (String logger : loggers) {
  94. String level = jMXConfiguratorMBean.getLoggerLevel(logger);
  95. if (level != null && (!level.equals(""))) {
  96. pageContext.setAttribute("logger", logger);
  97. pageContext.setAttribute("level", level);
  98. %>
  99. <tr>
  100. <td>${logger}</td>
  101. <td>
  102. <select onchange="updateLoggerLevel('${logger}', this.value)">
  103. <option value="OFF" ${level == 'OFF' ? 'selected' : ''}>OFF</option>
  104. <option value="ERROR" ${level == 'ERROR' ? 'selected' : ''}>ERROR</option>
  105. <option value="WARN" ${level == 'WARN' ? 'selected' : ''}>WARN</option>
  106. <option value="INFO" ${level == 'INFO' ? 'selected' : ''}>INFO</option>
  107. <option value="DEBUG" ${level == 'DEBUG' ? 'selected' : ''}>DEBUG</option>
  108. <option value="TRACE" ${level == 'TRACE' ? 'selected' : ''}>TRACE</option>
  109. <option value="ALL" ${level == 'ALL' ? 'selected' : ''}>ALL</option>
  110. </select>
  111. </td>
  112. <td>
  113. <%
  114. if ("ROOT".equals(logger)) {
  115. %>
  116. &nbsp;
  117. <%
  118. } else {
  119. %>
  120. <button onclick="updateLoggerLevel('${logger}', 'null')">delete</button>
  121. <%
  122. }
  123. %>
  124. </td>
  125. </tr>
  126. <%
  127. }
  128. }
  129. %>
  130. </tbody>
  131. </table>
  132. </body>
  133. </html>