SpringBoot學(xué)習(xí)--09配置log4j2日志詳解(下)--升級(jí)改造(異步,適配)
標(biāo)簽:
SpringBoot
上篇我们完成了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可以很好的保证我们的日志系统具有良好的兼容性,兼容当前常见几种日志系统,不会出现异常.
在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>
使用时将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的依赖包而出现异常.
作者:渊默十三
链接:https://www.jianshu.com/p/7133f436772b
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得
100積分直接送
付費(fèi)專(zhuān)欄免費(fèi)學(xué)
大額優(yōu)惠券免費(fèi)領(lǐng)