将应用的log4j换成logback

将应用的log4j换成logback

考虑到log4j很久不更新、性能相对弱,以及一些项目本身的原因,经过较为谨慎的考虑,决定改用logback。迁移还是比较顺利的,花了1个小时左右就搞定了,做个简单的笔记。

(1) 首先去掉所有log4j相关的依赖,主要有:

复制代码
<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
</dependency>

以及:

复制代码
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
</dependency>

(2) 为项目添加以下依赖:

复制代码
<!-- logback日志配置开始 -->
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-core</artifactId>
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-access</artifactId>
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>log4j-over-slf4j</artifactId>
</dependency>
<!-- logback日志配置结束 -->

(3) 删除项目/src/main/resources目录下的log4j.properties,并在该目录添加logback.xml文件,logback.xml文件如下:

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<Target>System.out</Target>
		<encoder>
			<pattern>%date [%level] [%thread] %logger{80} [%file : %line] %msg%n</pattern>
		</encoder>
	</appender>
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<encoder>
			<pattern>%date [%level] [%thread] %logger{80} [%file : %line] %msg%n</pattern>
		</encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${catalina.home}/logs/yzf/sql%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 保留 30天数据,默认无限-->
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
	</appender>
	<logger name="org.springframework" level="INFO" />
	<logger name="org.apache" level="INFO" />

	<logger name="com.itmuch" level="WARN" />
	<root level="INFO">
		<appender-ref ref="CONSOLE" />
		<appender-ref ref="FILE" />
	</root>
</configuration>

TIPS

(1) log4j-over-slf4j与slf4j-log4j12不能共存,可能会引发异常,详见http://www.tuicool.com/articles/INveIf

(2) slf4j-api、slf4j-log4j12以及log4j之间的关系http://blog.csdn.net/tengdazhang770960436/article/details/18006127

(3) 参考文档:http://blog.csdn.net/chenminghe271/article/details/38682493

相关推荐
许彰午9 天前
39_Java单元测试JUnit入门
java·junit·单元测试
果子耶耶9 天前
让大模型帮我写单元测试,5个模型的覆盖率和边界处理能力实测
chatgpt·单元测试
川石课堂软件测试10 天前
APP自动化测试|高级手势操作&toast操作
css·功能测试·测试工具·microsoft·fiddler·单元测试·harmonyos
周杰伦fans11 天前
记一次 Visual Studio 突然报错“未能加载 Microsoft.Internal.VisualStudio.Interop”的奇葩经历
microsoft·log4j·visual studio
laplaya11 天前
C++大型项目组件通信与依赖管理实践
c++·log4j·apache
福大大架构师每日一题12 天前
ollama v0.30.7 正式发布:Hermes 桌面端落地,接口、文档、底层依赖全方位优化
golang·log4j
Thecozzy12 天前
单元测试 vs 手工测试:以水印功能为例
单元测试
四问四不知13 天前
Understand Anything的初步了解
log4j
HLAIA光子13 天前
AI Coding框架,打好TDD和SDD这两拳
单元测试·ai编程·代码规范