麻烦从YAML文件自动配置log4j 2

问题描述 投票:0回答:1

这是我的应用程序代码。运行时,仅记录错误字符串。我可以看到yaml文件复制到build / resources文件夹中。即使遵循命名约定并将yaml文件放置在正确的位置,我也无法诊断为什么自动配置无法正常工作。

public class App {
    private static final Logger logger = LogManager.getLogger();

    public static void main(String[] args) {
        logger.trace("Entering application.");
        logger.error("Some error");
        logger.trace("Exiting application.");
    }
}

我的build.gradle看起来像这样。

plugins {
    id 'java'
    id 'application'
    id 'groovy'
}

repositories {
    jcenter()
}

dependencies {
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.13.1'
    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.13.1'


    implementation 'com.google.guava:guava:28.0-jre'
    testImplementation 'org.codehaus.groovy:groovy-all:2.5.7'
    testImplementation 'org.spockframework:spock-core:1.3-groovy-2.5'
    testImplementation 'junit:junit:4.12'
}

application {
    mainClassName = 'myapp.App'
}

我已将log4j2.yaml文件放在src / main / resources下。

Configuration:
  status: warn
  name: YAMLConfigTest
  properties:
    property:
      name: filename
      value: target/test-yaml.log
  thresholdFilter:
    level: debug
  appenders:
    Console:
      name: STDOUT
      PatternLayout:
        Pattern: "%m%n"
    File:
      name: File
      fileName: ${filename}
      PatternLayout:
        Pattern: "%d %p %C{1.} [%t] %m%n"
      Filters:
        ThresholdFilter:
          level: error

  Loggers:
    logger:
      -
        name: org.apache.logging.log4j.test1
        level: debug
        additivity: false
        ThreadContextMapFilter:
          KeyValuePair:
            key: test
            value: 123
        AppenderRef:
          ref: STDOUT
      -
        name: org.apache.logging.log4j.test2
        level: debug
        additivity: false
        AppenderRef:
          ref: File
    Root:
      level: debug
      AppenderRef:
        ref: STDOUT
java build.gradle log4j2
1个回答
0
投票

您的记录器在调试级别配置。第一个和第三个日志记录调用处于跟踪级别。跟踪更精细,可进行调试,因此不会被记录。那只剩下您的错误日志事件。由于默认情况下,您的应用程序使用的Logger的名称将为“ App”,因此它将使用根记录器,该记录器会将其路由到控制台。

© www.soinside.com 2019 - 2024. All rights reserved.