SpringBoot学习--09配置log4j2日志详解(下)-

作者: 渊默十三 | 来源:发表于2018-06-06 12:02 被阅读3次

    上篇我们完成了log4j2的日志配置,但是log4j2最好的地方就是异步日志模式,所以在这里我们就要进行升级改造.

    • 异步改造(混合异步输出:控制台同步输出,保存日志异步输出)

    • 在pom.xml中导入log4j2日志的异步依赖
        <!-- log4j2异步依赖包 -->
        <dependency>
          <groupId>com.lmax</groupId>
          <artifactId>disruptor</artifactId>
          <version>3.4.2</version>
        </dependency>
    
    • 修改xml中的配置:
    # 原有配置
    <Loggers>
        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
        <logger name="org.springframework" level="INFO" />
        <logger name="org.mybatis" level="INFO" />
        <!-- 配置日志的根节点 -->
        <!-- 定义logger,只有定义了logger并引入了appender,appender才会生效 -->
        <root level="${OUT_LOG_LEVEL}">
          <appender-ref ref="console_out_appender" />
          <appender-ref ref="console_err_appender" />
          <appender-ref ref="trace_appender" />
          <appender-ref ref="debug_appender" />
          <appender-ref ref="info_appender" />
          <appender-ref ref="warn_appender" />
          <appender-ref ref="error_appender" />
        </root>
      </Loggers>
    

    修改后的配置:

      <Loggers>
        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
        <logger name="org.springframework" level="INFO" />
        <logger name="org.mybatis" level="INFO" />
        <!-- 配置日志的根节点 -->
        <!-- 定义logger,只有定义了logger并引入了appender,appender才会生效 -->
       <!-- 打印日志同步输出 -->
        <root level="${OUT_LOG_LEVEL}" includeLocation="true">
          <appender-ref ref="console_out_appender" />
          <appender-ref ref="console_err_appender" />
        </root>
        <!-- 保存日志异步输出 -->
        <AsyncLogger level="${OUT_LOG_LEVEL}" includeLocation="true">
          <appender-ref ref="trace_appender" />
          <appender-ref ref="debug_appender" />
          <appender-ref ref="info_appender" />
          <appender-ref ref="warn_appender" />
          <appender-ref ref="error_appender" />
        </AsyncLogger>
      </Loggers>
    
    • 很多时候项目中的日志系统没有导入log4j2的依赖包,使用接口会出现错误.现在将日志系统重构成基于Slf4j和log4j2的日志系统,使用slf4j可以很好的保证我们的日志系统具有良好的兼容性,兼容当前常见几种日志系统,不会出现异常.

      1. 在pom.xml导入slf4j和log4j2的桥接包,
        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
        </dependency>
         <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
    
      1. 使用时将log导入包替换,如下所示:
    #替换前
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    private static final Logger log = LogManager.getLogger(SysDepartmentController.class);
    
    #替换后
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    private static final Logger log = LoggerFactory.getLogger(SysDepartmentController.class);
    

    其输出效果是一样的,但是项目作为接口的时候不会因为没有导入log4j2的依赖包而出现异常.

    Log4j2异步使用:http://www.ijava.com/article/access-47915.html

    相关文章

      网友评论

        本文标题:SpringBoot学习--09配置log4j2日志详解(下)-

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