因此,我有一个主要的spring-boot项目,它有2个其他项目(不是spring)作为依赖项。
所有这3个项目都使用log4j.properties资源文件中的www.example.com文件实现了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属性文件。我已经搜索过了,但是我找不到这个问题的解决方案...
提前感谢大家!:)
1条答案
按热度按时间h43kikqp1#
对于log4j,只使用了一个属性文件(请参见Multiple Log4j.properties files in classpath和How to initialize log4j properly?),这意味着将不考虑为项目A和B定义的属性文件,因为在您的场景中,主项目的日志属性文件似乎是类路径中的第一个。