IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]终结者:使用slf4j+log4j完美构建日志

    wangshuxuncom发表于 2016-11-30 10:24:57
    love 0

    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分下载】



沪ICP备19023445号-2号
友情链接