log4j2版本'2.10'配置模式

时间:2018-01-17 20:55:24

标签: java log4j2

当我尝试使用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>

1 个答案:

答案 0 :(得分:1)

您使用的新工作配置为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>