Java项目(非Web)整合lombok+slf4j1.7.x+log4j 2.x日志框架同时输出到文件和控制台
项目依赖
项目依赖的版本号如下:
<properties>
<lombok.version>1.18.2</lombok.version>
<slf4j.version>1.7.36</slf4j.version>
<log4j.version>2.17.2</log4j.version>
</properties>
项目的依赖包如下:
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
下图是 log4j-slf4j-impl 的依赖树:
-
虽然依赖树中已经包含了 log4j-api 的依赖,但是在尝试不指明版本的情况下,引用了 2.13.x 版本而非 2.17.2 版本,还因此报出 NoSuchMethodError;
-
但是 log4j-core 依赖的 scope 是 runtime,所以我们在项目中引用它。
初始化log4j 2.x
创建文件 src/main/resources/log4j2.xml
,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
<File name="FILE_APPENDER" fileName="logs/app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
<Async name="ASYNC_FILE_APPENDER">
<AppenderRef ref="FILE_APPENDER"/>
</Async>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="STDOUT" />
<AppenderRef ref="ASYNC_FILE_APPENDER"/>
</Root>
</Loggers>
</Configuration>
参考更多 Log4j 2.x Appenders
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix