【问题标题】:Log4j Dependecy Project NOT READING Properties FileLog4j 依赖项目未读取属性文件
【发布时间】: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


    【解决方案1】:

    当涉及到 log4j 时,仅使用 一个 属性文件(请参阅Multiple Log4j.properties files in classpathHow to initialize log4j properly?),这意味着不会考虑为项目 A 和 B 定义的属性文件,因为它看起来在您的场景中,主项目的日志属性文件是类路径中的第一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 2018-01-04
      • 2017-07-28
      • 2016-08-01
      • 1970-01-01
      相关资源
      最近更新 更多