老系统中log4j切换到logback

Posted 艾草有爱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老系统中log4j切换到logback相关的知识,希望对你有一定的参考价值。

基于SLF4J,可以无缝的将log4j切换到logback。

1、引入logback依赖

<slf4j-version>1.7.5</slf4j-version>
<log4j-over-slf4j-version>1.7.5</log4j-over-slf4j-version>
<logback-version>1.1.7</logback-version>

......
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j-version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>log4j-over-slf4j</artifactId>
    <version>${log4j-over-slf4j-version}</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>${logback-version}</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>${logback-version}</version>
</dependency>

2、删除log4j和slf4j-log4j12依赖

注意有的jar包可能间接引用了log4j,此时需要exclusions掉,如:

查找哪些jar包间接引用了log4j:打开pom.xml——>切换到Dependency Hierarchy——>搜索log4j。

 

3、将logback.xml加到项目中,保证编译到classpath目录下

logback.xml例子参考:https://files.cnblogs.com/files/acyouai/logback-example.xml

系统中log4j.properties无用了,可以删掉

 

4、其他问题

有的系统可能还是用的log4j在打日志,原因可能是maven中部分包间接的引用了log4j的包导致。需要在代码中显示的将log4j的引用改为slf4j。

  • 如果用了lombok,只需将注解@log4j替换为@Slf4j
  • 如果是显示的定义log实例,只需将

private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);

替换为
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

 

以上是关于老系统中log4j切换到logback的主要内容,如果未能解决你的问题,请参考以下文章

Java日志体系 —— 日志框架切换

如何查看当前系统apache 版本

老板下了死命令,要把日志系统切换到Logback

最新的 log4j (5.1.0)剖析开篇

[放假啦]最新的 log4j (5.1.0)剖析开篇

进程切换 多线程并发