Log4j 实现运行时的日志级别更改
来源:互联网 发布:馒头日记 知乎 编辑:程序博客网 时间:2024/05/16 08:34
首先定义一个工具类Log4jConfig,具体如下:
import org.apache.log4j.Level;import org.apache.log4j.LogManager;public class Log4jConfig {public void enableInfo(String target){LogManager.getLogger(target).setLevel(Level.INFO);}public void enableWarn(String target){LogManager.getLogger(target).setLevel(Level.WARN);}public void enableError(String target){LogManager.getLogger(target).setLevel(Level.ERROR) ;}public void enableDebug(String target){LogManager.getLogger(target).setLevel(Level.DEBUG) ;}public void enableTrack(String target){LogManager.getLogger(target).setLevel(Level.TRACE) ;}public void enableOff(String target){LogManager.getLogger(target).setLevel(Level.OFF) ;}}
然后定义action,定义为Log4jAction,里面定义3个方法分别用户新增日志对象、查询日志对象列表、更改日志对象的级别,具体如下:
import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.Enumeration;import java.util.List;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Level;import org.apache.log4j.Logger;import org.apache.struts2.ServletActionContext;public class Log4jAction {Log4jConfig config = new Log4jConfig();//日志对象列表private List<Logger> loggers;//日志对象名称private String name;//日志对象级别private String level;/** * 日志列表*/public String getLogList(){//日志列表loggers = new ArrayList<Logger>();//获取根日志Logger rootLogger = Logger.getRootLogger();loggers.add(rootLogger);//获取当前所有的日志对象Enumeration<Logger> enumer = (Enumeration<Logger>)rootLogger.getLoggerRepository().getCurrentLoggers();while(enumer.hasMoreElements()){Logger logger = enumer.nextElement();if((null != level) && (!"".equals(level)) && (!"ALL".equals(level))&& (null != logger.getLevel()) && (!logger.getLevel().toString().equals(level))){continue;}if((null != name) && (!"".equals(name)) && (!logger.getName().contains(name))){continue;}loggers.add(logger);}return SUCCESS;}/** * 更新日志级别 * @return */public String editLoggerLevel(){if(Level.INFO.toString().equals(level)){config.enableInfo(name);}else if(Level.ERROR.toString().equals(level)){config.enableError(name);}else if(Level.DEBUG.toString().equals(level)){config.enableDebug(name);}else if(Level.WARN.toString().equals(level)){config.enableWarn(name);}else if(Level.OFF.toString().equals(level)){config.enableOff(name);}return SUCCESS;}/** * 新增日志对象 * @return * @throws IOException */public String addNewLogger() throws IOException{Logger log = ("".equals(name) ? Logger.getRootLogger() : Logger.getLogger(name)); log.setLevel(Level.toLevel(level, Level.DEBUG)); printStr("1"); return null;}public void printStr(String jsonStr) throws IOException{HttpServletResponse httpServletResponse = ServletActionContext.getResponse();httpServletResponse.setCharacterEncoding("UTF-8");httpServletResponse.setContentType("text/x-json;charset=UTF-8");PrintWriter pw = httpServletResponse.getWriter();pw.print(jsonStr);pw.flush();pw.close();}/** * @return loggers */public List<Logger> getLoggers() {return loggers;}/** * @return name */public String getName() {return name;}/** * @param name */public void setName(String name) {this.name = name;}/** * @return level */public String getLevel() {return level;}/** * @param level */public void setLevel(String level) {this.level = level;}}
然后在sturts配置文件中配置action具体如下:
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="log4j" extends="struts-default" namespace="/"><action name="getLogList" class="log4jAction" method="getLogList"><result name="success" >/log4j2.jsp</result></action><action name="editLoggerLevel" class="log4jAction" method="editLoggerLevel" ><result name="success" type="redirect">getLogList.do </result> </action><action name="addNewLogger" class="log4jAction" method="addNewLogger" ></action></package></struts>
接着实现页面log4j.jsp,具体如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <style type="text/css"> .add{ height:30px; line-height:30px; float:right; font-size:14px;} .add a{ color:#000000; margin:0px 10px;} .clear{ display:block; height:0px; line-height:0px; font-size:0px; clear:both;} .fd{ width:100%; height:auto; position:absolute; top:150px; left:0px; z-index:1; display:none;} .fd_box{ width:320px; height:auto; margin:0px auto; position:relative; } .tm_box{ width:300px; height:200px; padding:10px; background-color:#808080; -webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px; FILTER: alpha(opacity=50); opacity: 0.5; -moz-opacity: 0.5; position:absolute; top:0px; left:0px; z-index:2;} .add_box{ width:280px; height:180px; padding:10px; background-color:#808080; -webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px; position:absolute; top:10px; left:10px; z-index:3; font-family:"宋体";} .add_box h1{ width:270px; height:30px; line-height:30px; font-size:14px; margin:0px; padding:0px 5px; font-weight:100; color:#666666; border-bottom:1px solid #009999;} .add_box span{ color:#000000; display:block; margin:10px 0px; padding:0px 5px;} .clos{ width:14px; height:13px; background-image:url(/images/close3.gif); background-repeat:no-repeat; position:absolute; top:25px; right:25px; z-index:4; cursor: pointer;} .box{ width:760px; height:auto; margin:0px auto; border-top:1px solid #f9f9f9;} .box img{ margin:50px auto; display:block; border:0px;} </style> <script type="text/javascript" src="script/jquery-1.8.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#addNewLogger").click( function(){ $(".fd").show(); return false; }); $(".clos").click( function(){ $(".fd").hide(); }); $("#addButton").click( function(){ var level = $("#logLevel").val();var name = $("#logName").val();if(level==''){alert("Level must be not null!!!");return;}if(name==''){alert("Name must be not null!!!");return;} var param={}; param['level'] = level;param["name"] = name;$.post("addNewLogger.do",param,function(data){ if(data == "1"){ alert("Add new logger success!!!"); window.location.href = "getLogList.do"; } else { alert("System error!!!"); } $(".fd").hide(); }); }); }); </script><div><form action="getLogList.do" method="post"> <table style="margin-bottom: 8px;" cellspacing="0" cellpadding="0"width="60%" border="0" align="center"><tbody><tr><td class="f66" align="center" width="80%" height="36px">Level: <select name="level"> <option value="ALL" selected="selected">ALL</option> <s:generator separator="," val="'DEBUG,INFO,WARN,ERROR,OFF'"> <s:iterator value="top" id="inner"> <option value="<s:property/>" <s:if test="#requestlevel==#inner">selected="selected </s:if>><s:property/></option> </s:iterator> </s:generator> </select> logger: <input id="name" name="name" value="${name }"/> <input id="search" type="submit" value="search" name="search" class="scbtn"/></td><td align="center"><input type="button" value="addNewLogger" id="addNewLogger" /></td></tr></tbody></table></form><div class="fd"> <div class="fd_box"> <div class="tm_box"></div> <div class="add_box"> <h1 style="color:#000000">Add New Logger</h1> <span>Level:<select style="width:150px; height:23px;" id="logLevel" name="logLevel"> <option value="DEBUG" selected="selected">DEBUG</option> <s:generator separator="," val="'INFO,WARN,ERROR,OFF'"> <s:iterator> <option value="<s:property/>"><s:property/></option> </s:iterator> </s:generator> </select> </span> <span>Name: <input id="logName" name="logName" id="logName" type="text" /></span> <span> <input id="addButton" value="Add" name="addButton" type="button" /></span> </div> <div class="clos"></div> </div> </div><table id="gvNews" style="width: 80%; color: #333333;"cellspacing="1" cellpadding="3" border="1" align="center"><tbody><tr><th scope="col" width="100px">Level</th><th scope="col">Logger</th><th scope="col" width="400px">Set New Level</th></tr><s:iterator value="loggers" var="bean" status="st"><tr><td align="center">${level}</td><td>${name}</td><td><s:generator separator="," val="'DEBUG,INFO,WARN,ERROR,OFF'"> <s:iterator> <a href="editLoggerLevel.do?name=${name}&level=<s:property/>"> <s:property/> </a> </s:iterator> </s:generator></td></tr></s:iterator></tbody></table></div>
0 0
- Log4j 实现运行时的日志级别更改
- Log4j的日志级别
- Log4j的日志级别
- log4j的日志级别
- log4j的日志级别
- log4j的日志级别
- Log4j的日志级别
- 更改log4j日志级别而不重启服务器
- Log4j的日志级别--总结
- Log4j的输出日志级别
- log4j的日志级别记录
- log4j的日志级别记录
- log4j提供的日志级别
- 更改hive的日志级别
- [Log4j] log4j日志级别
- Log4J 在系统运行时更改log4j的配置
- Log4J 在系统运行时更改log4j的配置
- Log4J 在系统运行时更改log4j的配置
- 【Error】Python:SyntaxError: Non-ASCII character '\xe5'解决方法
- 指称语义简介
- android 只允许运行一个Activity实例
- C#实现google Pr查询的方法
- Java SE 5 新特性
- Log4j 实现运行时的日志级别更改
- web.config 配置
- Linux zip command
- 经典C语言程序设计100例 -- C 和 Python 版 (01 - 05)
- wxWidgets初体验
- android示例之AppWidget(1)
- Thirft框架介绍
- [POJ][1015]Jury Compromise
- 界面设计