实时控制log4j日记输出级别-Log4J日志级别控制中心

实时控制log4j日志输出级别-Log4J日志级别控制中心

 

动态控制Log4J日志级别,只需要一个JSP页面即可。log4jCtl.jsp如下
<%@ page language= "java" contentType ="text/html; charset=UTF-8"
       pageEncoding="UTF-8" %>
<%@ page import="org.apache.log4j.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="basePath" value="${pageContext.request.contextPath} "/>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
       <head>
             <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
             <title> Log4J级别控制</title >
             <style type="text/css" >
             /* 超级链接样式 */
             a{
                text-decoration: none ;
            }
             a:link {text-decoration :none ;}
             a:visited {text-decoration :none;}
             a:hover {color : #F60; text-decoration: underline;}
             a:active {text-decoration :underline;}
            
             body {
                font: normal 11px auto "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
                /*color: #4f6b72;
                background: #E6EAE9; */
            }
            
             #log-table {
                padding: 0 ;
                margin: 5px 0 ;
            }
            
          tr{
              background: #F5FAFA ;
          }
          tr:nth-child(2n) {
              background: #fff ;
          }
          tr{
              background-color: expression( (this.sectionRowIndex % 2 == 0) ?   "#F5FAFA" : "#fff" );
          }
          td {
                border-right: 1px solid #C1DAD7 ;
                border-bottom: 1px solid #C1DAD7 ;
                font-size:12px ;
                padding: 6px 6px 6px 12px ;
                /*color: #4f6b72; */
            }
             .left-border{
                   border-left: 1px solid #C1DAD7 ;
            }
             th {
                font: bold 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
                /*color: #4f6b72; */
                border-right: 1px solid #C1DAD7 ;
                border-bottom: 1px solid #C1DAD7 ;
                border-top: 1px solid #C1DAD7 ;
                letter-spacing: 2px ;
                /*text-transform: uppercase; */
                text-align: center ;
                padding: 6px 6px 6px 12px ;
                background: #CAE8EA ;
            }
             /*---------for IE 5.x bug*/
             html> body td {
                   font-size:12px ;
            }
             </style>
            
       </head>
      
       <body>
             <h1> Log4J日志级别控制中心 </h1>
             <div>
                  显示 <a href=" ${basePath}/log4j.jsp?showAll=true"> 所有 Logger</a> | 显示<a href="${basePath} /log4j.jsp?showAll=false" >当前运行的Logger</a >
             </div>
             <%
            String logName = request.getParameter( "log");
          if (null != logName) {
              Logger log = ( "".equals(logName) ? Logger.getRootLogger() : Logger.getLogger(logName));
              log.setLevel(Level.toLevel(request.getParameter( "level"), Level.DEBUG));
          }
             %>
             <c:set var="rootLogger" value="<%= Logger.getRootLogger() %>" />
             <form>
                   <table id= "log-table" cellspacing ="0" >
                         <tr>
                               <th class="left-border" >Level</ th>
                               <th> Logger</th >
                               <th> Set New Level</th >
                         </tr>
                         <tr>
                               <td class="left-border" >${rootLogger.level}</ td>
                               <td> ${rootLogger.name}</td >
                               <td>
                                     <c:forTokens var="level" delims="," items="ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF" >
                                           <a href=" ${basePath}/log4j.jsp?showAll=${param.showAll} &log=&level=${level}">${level}</ a>&nbsp; |
                                     </c:forTokens>
                               </td>
                         </tr>
                         <c:forEach var="logger" items=" ${rootLogger.loggerRepository.currentLoggers}">
                               <c:if test=" ${!empty logger.level.syslogEquivalent || param.showAll} ">
                                     <tr>
                                           <c:if test=" ${!empty logger.level.syslogEquivalent}">
                                                 <td class="left-border" >${logger.level}</ td>
                                                 <td> ${logger.name}</td >
                                                 <td> <!-- 只有当前已经有实例的Log行能显示出来 -->
                                                       <c:forTokens var="level" delims="," items="ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF" >
                                                             <a href=" ${basePath}/log4j.jsp?showAll=${param.showAll} &log=${logger.name}&level=${level}"> ${level}</a >&nbsp;|
                                                       </c:forTokens>
                                                 </td>
                                           </c:if>
                                           <c:if test=" ${empty logger.level.syslogEquivalent}">
                                                 <td class="left-border" >----</ td>
                                                 <td> ${logger.name}</td >
                                                 <td> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此Logger还未实例化运行 </td>
                                           </c:if>
                                     </tr>
                               </c:if>
                         </c:forEach>
</table>
             </form>
             <div>
                  显示 <a href=" ${basePath}/log4j.jsp?showAll=true"> 所有 Logger</a> | 显示<a href="${basePath} /log4j.jsp?showAll=false" >当前运行的Logger</a >
             </div>
       </body>
</html>