求助:Log4j无法将日志写入指定文件
解决Log4j2日志写入文件无效的问题
核心问题分析
- 你代码中使用的是Log4j2的API(
org.apache.logging.log4j.LogManager),但配置文件是Log4j 1.x的格式,两者完全不兼容。 - VM参数存在格式错误:两个系统属性之间缺少空格,且配置文件名不符合Log4j2的默认命名规则。
具体修复步骤
调整配置文件名
将log4j.properties重命名为log4j2.properties,放在src/main/resources下即可。若手动指定路径,需保证参数间有空格,且Windows路径用正斜杠/或双反斜杠\\:-Dlog4j2.debug=true -Dlog4j2.configurationFile=C:/Users/xxx/resources/log4j2.properties替换为Log4j2格式的配置内容
以下是适配你需求的Log4j2 properties配置:# 根日志级别 rootLogger.level = info rootLogger.appenderRef.file.ref = FileAppender # 定义滚动文件追加器 appender.file.type = RollingFile appender.file.name = FileAppender appender.file.fileName = C:/logs/mylog.log appender.file.filePattern = C:/logs/mylog-%d{yyyy-MM-dd}.log appender.file.immediateFlush = true appender.file.append = true # 滚动触发策略:按大小+时间滚动 appender.file.policies.type = Policies appender.file.policies.size.type = SizeBasedTriggeringPolicy appender.file.policies.size.size = 10MB appender.file.policies.time.type = TimeBasedTriggeringPolicy appender.file.policies.time.interval = 1 appender.file.policies.time.modulate = true # 备份文件保留数量 appender.file.strategy.type = DefaultRolloverStrategy appender.file.strategy.max = 20 # 日志输出格式 appender.file.layout.type = PatternLayout appender.file.layout.pattern = %d{ABSOLUTE} %5p %t %c{2}:%L - %m%n简化VM参数(可选)
若配置文件已放在src/main/resources下,可省略log4j2.configurationFile参数,Log4j2会自动扫描加载该目录下的log4j2.properties。
验证方式
启动程序后查看C:\logs目录是否生成日志文件,开启log4j2.debug=true可在控制台看到配置加载的详细日志,快速排查文件找不到、格式错误等问题。
内容的提问来源于stack exchange,提问作者user3201343
相关产品推荐
相关产品推荐

