美文网首页程序猿代码总结
项目中日志的一个小应用

项目中日志的一个小应用

作者: 丶Zzz | 来源:发表于2016-11-21 11:27 被阅读0次

    需求

    项目中的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对象的属性配置(位置,时间,回滚日志名字格式,日志保留的最大天数)
    -日志文件中的消息格式

    问题

    • looger.setAdditive();默认值为true,由于其他版块已经有Logger对象,若不想让该信息再输出到父类,需要指定为false;

    相关文章

      网友评论

        本文标题:项目中日志的一个小应用

        本文链接:https://www.haomeiwen.com/subject/fscupttx.html