Log4J无法写入日志文件问题求助(附Log4E配置代码)
解决Log4J2无法写入日志文件的问题
我来帮你排查下这个日志写入失败的问题,结合你给出的配置内容,咱们从几个常见的坑入手分析:
1. 配置文件语法混淆(核心问题)
你用的是Log4J2,但配置里写的是Log4J 1.x的语法(比如log4j.rootLogger、org.apache.log4j.RollingFileAppender),这俩语法完全不兼容!Log4J2的properties配置格式有自己的规范,这会直接导致配置不生效。
2. 路径转义错误
Windows系统的路径反斜杠\在properties文件里需要转义成双反斜杠\\,或者改用正斜杠/,否则Log4J无法正确解析路径。你当前的C:\Robinsonfile\log\logging.log会被解析出错。
3. 目录权限与存在性问题
- 先确认
C:\Robinsonfile\log目录是否存在,如果不存在,Log4J默认不会自动创建目录(除非你配置了相关参数),需要手动创建。 - 检查运行Eclipse的用户是否有该目录的写入权限,比如Windows下如果目录在C盘根目录,可能需要管理员权限才能写入,可以先把日志路径改到用户目录(比如
C:\Users\你的用户名\logs\logging.log)测试。
4. 配置文件加载位置
确保你的log4j2.properties放在Eclipse项目的classpath根目录下(比如Maven项目的src/main/resources,普通Java项目的src目录),否则Log4J2会加载默认配置,不会应用你的自定义设置。
5. 不完整的格式配置
你配置里的ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-...是不完整的,这会导致配置解析失败,需要补充完整的格式模板,比如包含日志级别、类名、日志内容等。
修正后的完整Log4J2.properties配置示例
# Root logger configuration rootLogger.level = INFO rootLogger.appenderRefs = file, stdout rootLogger.appenderRef.file.ref = FileAppender rootLogger.appenderRef.stdout.ref = ConsoleAppender # File Appender configuration appender.file.type = RollingFile appender.file.name = FileAppender appender.file.fileName = C:\\Robinsonfile\\log\\logging.log appender.file.filePattern = C:\\Robinsonfile\\log\\logging-%d{yyyy-MM-dd}-%i.log.gz appender.file.layout.type = PatternLayout appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n appender.file.policies.type = Policies appender.file.policies.size.type = SizeBasedTriggeringPolicy appender.file.policies.size.size = 10MB appender.file.strategy.type = DefaultRolloverStrategy appender.file.strategy.max = 10 # Console Appender configuration appender.stdout.type = Console appender.stdout.name = ConsoleAppender appender.stdout.layout.type = PatternLayout appender.stdout.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
把上面的配置替换你的文件,再按照前面的几点检查路径、权限和配置位置,应该就能解决日志写入的问题了。
内容的提问来源于stack exchange,提问作者Patrick.H
相关产品推荐
相关产品推荐

