log4j的出现极大方便了对系统运行期间出现“异样”问题的收集,由于该种技术有其自身的缺陷,slf4j就运应而生,slf4j需要借助log4j才能真正运行。
工程结构如下图:
具体配置如下:
第一步:导入jar包(参见最下面【资源0分下载】)
第二步:在src根目录下创建名为log4j.properties的文件,文件内容如下:
log4j.rootLogger=DEBUG,Console,RollingFile #将日志信息输出到控制台 log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern= [%-5p]-[%d{yyyy-MM-dd HH:mm:ss}] -%l -%m%n #将日志信息输出到操作系统D盘根目录下的log.log文件中 log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender log4j.appender.RollingFile.File=D://log.log log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout log4j.appender.RollingFile.layout.ConversionPattern=%d [%t] %-5p %-40.40c %X{traceId}-%m%n说明:该文件中代码的含义请参见博客《终结者:详述Log4j配置文件中代码的含义》
第三步:如何使用,参见下面代码:
package com.ghj.test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Test { public final static Logger logger = LoggerFactory.getLogger(Test.class); public static void main(String[] args) { try { Class.forName("com.ghj.ErrorClassName"); } catch (ClassNotFoundException e) { logger.debug(e.getMessage(),e);//详细日报信息 logger.info(e.getMessage(),e);//详细日报信息 logger.warn(e.getMessage());//简单日报信息 logger.error(e.getMessage());//简单日报信息 } } }
注意:
1、引包时引入的org.slf4j.Logger和org.slf4j.LoggerFactory这两个包,不是org.apache.log4j.Logger和org.apache.log4j.spi.LoggerFactory这两个包。
2、如果生成日报的详细信息请调用含有两个参数(一个参数为Object message,另一个为 Throwable t)的方法,该方法将输出堆栈中的所有信息,如下图:
【资源0分下载】