SpringBoot学习--09配置log4j2日志详解(下)--升级改造(异步,适配)

上篇我们完成了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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (一)军队分类 1.乌合之众:散兵游勇,无组织,无纪律; 2.结构完整,军容整齐,无斗志; 3.士气高涨,装备经精...
    碎碎念的又又阅读 1,390评论 0 0
  • 老宅东墙角栽有几株月桂,每逢秋季白色的花骨便开始伸展,尤是仲秋,清香最是绝尘。 以往每年中秋,一家人总爱取出几条长...
    Mr橘子阅读 361评论 0 3
  • 系统发育树的构建 现有的方法 系统发育树构建方法的优劣 link 选择:一般情况下,若有合适的分子进化模型可供选择...
    六耳弥猴阅读 12,792评论 0 19