最近把项目的日志框架从 log4j 迁移到 logback,过程里遇到很多坑,记录下来
目标
本次迁移的目标就是用 slf4j+logback 的日志框架来取代目前的 slf4j+log4j
如何迁移
基于 slf4j+log4j 的无痛迁移
如果项目本身是采用的 slf4j+log4j 日志架构,迁移到 logback 就比较简单
第一步:修改依赖
原本是 slf4j+log4,依赖如下
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-apiartifactId>
dependency>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-log4j12artifactId>
dependency>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
dependency>
迁移到 slf4j+logback,依赖如下
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-apiartifactId>
dependency>
<dependency>
<groupId>ch.qos.logbackgroupId>
<artifactId>logback-classicartifactId>
dependency>
第二步:修改日志配置
logback 的配置文件为 logback.xml,替换掉 log4j.xml,以下示例,配置了输出日志到控制台及异步输出到文件,日志文件按日期滚动;同时支持使用 mdc 打印会话唯一标识 sid
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="false">
<property name="log.path" value="/data/dev/" />
<property name="app.n