Log4j2无法向控制台及文件输出日志(properties配置)
Log4j2控制台与文件日志均不输出的解决方法
核心问题排查与修复
1. 配置文件语法错误
你的log4j2.properties中,rootLogger的appender引用格式有误,正确语法需使用rootLogger.appenderRef而非rootLogger.appenderRefs定义每个附加器的引用。
修改后的完整配置文件:
appenders = myfileappender,console appender.myfileappender.type = File appender.myfileappender.name = myfileappender appender.myfileappender.fileName = logs/app.log # 自动创建不存在的日志目录 appender.myfileappender.createParents = true appender.myfileappender.layout.type = PatternLayout appender.myfileappender.layout.pattern = %C{1.} {%-5level} %d{HH:mm:ss} - %msg%n appender.console.type = Console appender.console.name = console appender.console.layout.type = PatternLayout appender.console.layout.pattern = %C{1.} {%-5level} %d{HH:mm:ss} - %msg%n rootLogger.level = ALL rootLogger.appenderRefs = file,console rootLogger.appenderRef.file.ref = myfileappender rootLogger.appenderRef.console.ref = console
2. 依赖完整性检查
确保项目引入了Log4j2的核心依赖(以Maven为例):
<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.20.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.20.0</version> </dependency> </dependencies>
如果项目用SLF4J作为日志门面,需额外添加桥接依赖:
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.20.0</version> </dependency>
3. 运行环境验证
- 确认
log4j2.properties放在src/main/resources目录下,构建工具会自动将其打包到classpath。 - 运行项目时确保工作目录为项目根目录,这样
logs/app.log会生成在项目根目录;若工作目录不符,可改用绝对路径指定日志文件位置。
验证方法
修改配置并更新依赖后重新运行主类,控制台应输出对应日志,同时项目根目录下的logs/app.log会被创建并写入日志内容。
内容的提问来源于stack exchange,提问作者Богдан Иманкулов
相关产品推荐
相关产品推荐

