Log4j依赖项项目未阅读属性文件

g6ll5ycj  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(134)

因此,我有一个主要的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属性文件。我已经搜索过了,但是我找不到这个问题的解决方案...
提前感谢大家!:)

h43kikqp

h43kikqp1#

对于log4j,只使用了一个属性文件(请参见Multiple Log4j.properties files in classpathHow to initialize log4j properly?),这意味着将不考虑为项目A和B定义的属性文件,因为在您的场景中,主项目的日志属性文件似乎是类路径中的第一个。

相关问题