javaEE开发之使用log4j记录日志

来源:互联网 发布:未来java的发展前景 编辑:程序博客网 时间:2024/05/16 16:57

web开发中,当项目开发完毕后,可能会有些bug存在,程序出现bug后,如何快速定位并修改,就需要对这些程序的运行过程做一个记录,并保存起来,以便维护。

常用的是使用log4j框架,通过自定义日志级别,然后在代码中打下日志。

首先,写一个工具类LogUtil:

import org.apache.log4j.Level;import org.apache.log4j.Logger;import org.apache.log4j.net.SyslogAppender;/** * 自定义级别日志定义log方法 */public class LogUtil {// 自定义等级private static final Level CUSTOM_LEVEL = new CustomLevel(25000, "CUSTOM",SyslogAppender.LOG_LOCAL0);// 单例模式private static LogUtil logUtil = new LogUtil();private LogUtil() {}private static Logger loggerCustom = null;public static LogUtil getLogUtil(Object message) {loggerCustom = Logger.getLogger(message.toString().substring(6));return logUtil;}public void customLog(Object message) {loggerCustom.log(CUSTOM_LEVEL, message);}}
然后,自定义一个日志级别过滤器CustomLogFilter:

import org.apache.log4j.spi.Filter;import org.apache.log4j.spi.LoggingEvent;/** * 自定义日志级别过滤器 *  */public class CustomLogFilter extends Filter {boolean acceptOnMatch;int levelMin;int levelMax;public int getLevelMin() {return levelMin;}public void setLevelMin(int levelMin) {this.levelMin = levelMin;}public int getLevelMax() {return levelMax;}public void setLevelMax(int levelMax) {this.levelMax = levelMax;}public boolean isAcceptOnMatch() {return acceptOnMatch;}public void setAcceptOnMatch(boolean acceptOnMatch) {this.acceptOnMatch = acceptOnMatch;}@Overridepublic int decide(LoggingEvent lgEvent) {int inputLevel = lgEvent.getLevel().toInt();if (inputLevel >= levelMin && inputLevel <= levelMax) {return 0;}return -1;}}
之后,自定义一个日志级别类,CustomLevel:

import org.apache.log4j.Level;/** *  * 自定义Custom级别 *  */public class CustomLevel extends Level {private static final long serialVersionUID = 1L;public CustomLevel(int level, String levelStr, int syslogEquivalent) {super(level, levelStr, syslogEquivalent);}}
最后,在log4j.xml中配置如下信息:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "log4j.dtd"><log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'><!-- 输出到控制台 --><appender name="myConsole" class="org.apache.log4j.ConsoleAppender"><!-- 输出格式 --><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%-5p] [%d{yyyy年MM月dd日  HH:mm:ss,SSS\}] %c - %m%n" /></layout><!--过滤器设置输出的级别 --><filter class="com.telek.utils.CustomLogFilter"><param name="levelMin" value="25000" /><param name="levelMax" value="25000" /><param name="AcceptOnMatch" value="true" /></filter></appender><!-- 输出到指定文件 --><appender name="Info" class="org.apache.log4j.RollingFileAppender"><param name="File"value="E:/WorkspaceForJava/UsedMallMinaServer/WebRoot/log/info.log" /><!-- 设置日志输出文件名 --><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --><param name="Append" value="true" /><param name="MaxBackupIndex" value="10" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%-5p] [%d{HH:mm:ss}] %c - %m%n" /></layout><!-- 过滤级别为只有info信息 --><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="levelMin" value="INFO" /><param name="levelMax" value="INFO" /><param name="AcceptOnMatch" value="true" /></filter></appender><appender name="Debug" class="org.apache.log4j.RollingFileAppender"><param name="File"value="E:/WorkspaceForJava/UsedMallMinaServer/WebRoot/log/debug.log" /><!-- 设置日志输出文件名 --><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --><param name="Append" value="true" /><param name="MaxBackupIndex" value="10" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%-5p] [%d{yyyy年MM月dd日  HH:mm:ss}] %c - %m%n" /></layout><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="levelMin" value="DEBUG" /><param name="levelMax" value="DEBUG" /><param name="AcceptOnMatch" value="true" /></filter></appender><appender name="Warn" class="org.apache.log4j.RollingFileAppender"><param name="File"value="E:/WorkspaceForJava/UsedMallMinaServer/WebRoot/log/warn.log" /><!-- 设置日志输出文件名 --><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --><param name="Append" value="true" /><param name="MaxBackupIndex" value="10" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%-5p] [%d{yyyy年MM月dd日  HH:mm:ss}] %c - %m%n" /></layout><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="levelMin" value="WARN" /><param name="levelMax" value="WARN" /><param name="AcceptOnMatch" value="true" /></filter></appender><appender name="Error" class="org.apache.log4j.RollingFileAppender"><param name="File"value="E:/WorkspaceForJava/UsedMallMinaServer/WebRoot/log/error.log" /><!-- 设置日志输出文件名 --><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --><param name="Append" value="true" /><param name="MaxBackupIndex" value="10" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%-5p] [%d{yyyy年MM月dd日  HH:mm:ss}] %c - %m%n" /></layout><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="levelMin" value="ERROR" /><param name="levelMax" value="ERROR" /><param name="AcceptOnMatch" value="true" /></filter></appender><appender name="MinaCustom" class="org.apache.log4j.RollingFileAppender"><param name="File"value="E:/WorkspaceForJava/UsedMallMinaServer/WebRoot/log/custom.log" /><!--设置日志输出文件名 --><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --><param name="Append" value="true" /><param name="MaxBackupIndex" value="10" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%-5p] [%d{yyyy年MM月dd日  HH:mm:ss,SSS\}] - %m%n" /></layout><filter class="com.telek.utils.CustomLogFilter"><param name="levelMin" value="25000" /><param name="levelMax" value="25000" /><param name="AcceptOnMatch" value="true" /></filter></appender><root><level value="ALL" /><appender-ref ref="myConsole" /><appender-ref ref="Info" /><appender-ref ref="Debug" /><appender-ref ref="Warn" /><appender-ref ref="Error" /><appender-ref ref="MinaCustom" /></root></log4j:configuration>





0 0
原创粉丝点击