log4j2 版本 '2.10' 配置模式



当我尝试使用 log4j2 版本 2.10 时发生了一些奇怪的事情。

每个示例(包括 log4j2 文档中的示例(似乎都是错误的。

请考虑以下示例: https://logging.apache.org/log4j/2.x/manual/configuration.html

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

使用上面的例子,我得到了以下输出:

log4j:WARN Continuable parsing error 2 and column 30
log4j:WARN Document root element "Configuration", must match DOCTYPE root "null".
log4j:WARN Continuable parsing error 2 and column 30
log4j:WARN Document is invalid: no grammar found.
log4j:ERROR DOM element is - not a <log4j:configuration> element.
log4j:WARN No appenders could be found for logger (utils.Xablau).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

并且不记录任何内容。

要解决这个问题,我必须使用其他模式,如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{HH:mm:ss,SSS} [%-5p] [%t] %m%n" />
        </layout>
    </appender>
    <appender name="FILE" class="org.apache.log4j.FileAppender">
        <param name="file"
               value="C:/tmp/logs/functional-test.log" />
        <param name="immediateFlush" value="true" />
        <param name="threshold" value="debug" />
        <param name="append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%m%n" />
        </layout>
    </appender>
    <category name="se.jayway.ddsteps">
        <priority value="info"></priority>
    </category>
    <root>
        <priority value="INFO"></priority>
        <appender-ref ref="console" />
        <appender-ref ref="FILE" />
    </root>
</log4j:configuration>

这是它工作和记录内容的唯一方式。

顺便说一句,我正在使用以下 Maven 依赖项导入:

<dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>2.10.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.10.0</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>

您使用的新工作配置是 log4j ,而不是 log4j2

我认为由于依赖关系问题,实际log4j2配置(第一个(不起作用。

以下依赖项必须处于pom.xml中,log4j2才能使其正常工作 -

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.10.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>log4j-core</version>
</dependency>

最新更新