【发布时间】:2021-11-10 14:51:24
【问题描述】:
所以我有一个主要的 spring-boot 项目,它有 2 个其他项目(不是 spring)作为依赖项。
所有这 3 个项目都使用资源文件上的 log4j.properties 文件实现了 LOG4J。 他们对 pom.xml 也有这些依赖:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.0</version>
</dependency>
但由于某种原因,由于我定义的布局配置,似乎只有主项目上的日志才能读取属性文件。
主项目属性文件:
log4j.logger.com.example.MainProject=DEBUG, consoleAppender, FILE
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=[MainProject] - %-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} - %C:%M:%L - %m%n
## File Appender
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=/opt/app/log/MainProject.log
log4j.appender.FILE.DatePattern='_'yyyy-MM-dd
log4j.appender.FILE.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.FILE.layout.ConversionPattern=[MainProject] - %-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} - %C:%M:%L - %m%n
log4j.additivity.com.example.MainProject=false
项目 B 属性文件:
log4j.logger.com.example.ProjectB=DEBUG, stdout, consoleAppender
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[ProjectB] - %-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} - %C:%M:%L - %m%n
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=[ProjectB] - %-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} - %C:%M:%L - %m%n
另一个完全相同的项目有ProjectB的例子
在日志上,我可以确认主项目内的日志以正确的布局打印:
[MainProject] - DEBUG - 2021-09-15 13:37:51.157 - com.example.MainProject.MainProjecApplication:start:35 - Starting Server...
[MainProject] - INFO - 2021-09-15 13:37:52.241 - com.example.MainProject.MainProjecApplication:start:46 - Server Running!
但是在作为主项目依赖项的项目 B 内部的日志上,它们不会以正确的布局打印。相反,它们是这样打印的:
0 [main] INFO com.example.ProjectB.Stan - Connecting to NATS Server...
181 [main] INFO com.example.ProjectB.Stan - Connected to NATS SUCCESSFULLY.
也就是说,在我看来,dependecy 项目没有读取它们自己的 log4j 属性文件。我已经搜索过,但我找不到这个问题的解决方案......
提前谢谢大家! :)
【问题讨论】:
标签: java spring-boot maven logging log4j