程序猿代码总结

项目中日志的一个小应用

2016-11-21  本文已影响0人  丶Zzz

需求

项目中的Maven中已经添加了Logger的依赖,现在想要对版块中的消息日志在本地记录。但是其他版块依赖中已经做了looger配置(Looger的输出文件,输出内容,级别之类的),在不影响其他模块的基础之上,决定采用代码动态指定配置,生成自用的logger对象。

解决方案:

直接上代码

   LoggerContext loggerContext = (LoggerContext)LoggerFactory.getILoggerFactory();
    Logger logger = loggerContext.getLogger(className); 
  
   //定义Appender
    logger.detachAndStopAllAppenders();
    RollingFileAppender appender = new RollingFileAppender();
    appender.setFile(filePattern);//设置文件名字
   
    //Appender的的属性配置  文件名字、位置、时间间隔
    TimeBasedRollingPolicy policy = new TimeBasedRollingPolicy();
    policy.setContext(loggerContext);
    policy.setMaxHistory(5);
    policy.setFileNamePattern(filePattern + "_%d{yyyy-MM-dd}");
    policy.setParent(appender);
    policy.start();
   
   //日志格式化
    PatternLayoutEncoder encoder = new PatternLayoutEncoder();
    encoder.setContext(loggerContext);
    encoder.setPattern(messagePattern);
    encoder.start();
   
    //启动Appender
    appender.setRollingPolicy(policy);
    appender.setContext(loggerContext);
    appender.setEncoder(encoder);
    appender.start();

    //将Appender加入logger
    logger.addAppender(appender);
    logger.setLevel(level);
    logger.setAdditive(false);//是否将消息传递给父节点
    return logger;

说明

上述代码主要分为三个部分:
-Logger对象的生成,及Logger对象上下文、appender、pattern指定
-Appender对象生成(动态日志文件)
-Appender对象的属性配置(位置,时间,回滚日志名字格式,日志保留的最大天数)
-日志文件中的消息格式

问题

上一篇 下一篇

猜你喜欢

热点阅读