首页 > 解决方案 > 是否可以为导入的库设置 log4j 模式布局?

问题描述

我能够使用我们的应用程序的日志输出导出的库的日志,但问题是它们使用不同的模式布局。图书馆的日志是这样的:

2020-08-07 16:54:44 INFO  logs content

我们的应用程序有这样的布局:

[2020-août-07 16:54:45 PM] [WARN ] [com.foo.class] log content

我确实将配置文件的位置添加为 vm 选项,并且还添加了这些库:

log4j-api-2.11.2.jar
log4j-core-2.11.2.jar
log4j-1.2-api-2.11.2.jar
log4j2.xml
while excluding: 
    log4j-1.2.x.jar

遵循log4j 常见问题解答,但这还不够。

任何想法将不胜感激。

编辑: 我们使用log4j 2.11.2,这里是依赖树的一个片段:

[INFO] +- org.springframework.boot:spring-boot-starter-log4j2:jar:2.1.4.RELEASE:compile
[INFO] |  +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.11.2:compile
[INFO] |  +- org.apache.logging.log4j:log4j-core:jar:2.11.2:compile
[INFO] |  +- org.apache.logging.log4j:log4j-jul:jar:2.11.2:compile
[INFO] |  \- org.slf4j:jul-to-slf4j:jar:1.7.26:compile

虽然该库通常使用: log4j:log4j:jar:1.2.15,但这是排除它之前的代码段:

[INFO] |  |     +- log4j:log4j:jar:1.2.15:compile

排除后,我可以看到在我的依赖树中没有 log4j 1.2.15

编辑 2: 这是我的 log4j2.yaml:

    Configuration:
  status: WARN
  name: Default
  Properties:
    Property:
      - name: log-path
        value: logs
  Appenders:
    Console:
      PatternLayout:
        pattern: '[%d{yyyy-MMM-dd HH:mm:ss a}] [%t] [%-5level] [%logger{36}] %msg%n'
      name: Console
      target: SYSTEM_OUT
    RollingFile:
      name: File
      fileName: ${log-path}/lfile-name.log
      filePattern: ${log-path}/file-name-%d{yyyy-MM-dd}-%i.log.gz
      PatternLayout:
        MarkerPatternSelector:
          defaultPattern: "[%d{yyyy-MMM-dd}] [%t] [%-5level] [%logger{36}] %msg%n"
  Loggers:
    Root:
      additivity: false
      level: INFO
      AppenderRef:
        - ref: Console
        - ref: File
    logger:
      - name: com.external.library
        additivity: false
        level: INFO
        AppenderRef:
          - ref: Console
          - ref: File

标签: javalog4jlog4j2

解决方案


推荐阅读