1

我有一个简单的问题,希望我能得到一个简单的答案。

我需要一个 log4j2 xml,它将转储所有日志,无论它们是从哪里生成的。现在,有趣的是,我看到了所有我不想看到的日志,但是我文件中的日志显示了可怕的“log4j:WARN No appenders can be found for logger”。

我的简单日志 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>

    <!-- Console Appender -->
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout
            pattern="%d{yyyy-MMM-dd HH:mm:ss a} [%t] %-5level %logger{36} - %msg%n" />
    </Console>

    <!-- File Appender -->
    <File name="File"
        fileName="./log/abc.log">
        <PatternLayout
            pattern="%d{yyyy-MMM-dd HH:mm:ss a} [%t] %-5level %logger{36} - %msg%n" />
    </File>
</Appenders>

<category name="com.abc.def.config.AppInitializer">
    <priority value="DEBUG" />
    <appender-ref ref="File" />
</category>

<category name="com.oli">
    <priority value="DEBUG" />
    <appender-ref ref="File" />
</category>

<Loggers>
    <Root level="trace">
        <AppenderRef ref="Console" />
        <AppenderRef ref="File" />
    </Root>
</Loggers>

有人可以改进这个 xml 文件,以便我能够在日志文件中看到我的类“com.abc.def.config.AppInitializer”生成的日志吗?

请注意,更多日志对我来说不错,但绝对不能选择丢失日志.. 最终目标是“过滤掉我们不需要的消息”而不是“过滤掉我们需要的消息”。

4

2 回答 2

0

从您提供的配置文件来看,这似乎相当不错。您应该在控制台和文件中看到您的日志消息。

你一开始得到的警告已经给了你一个提示——系统无法找到你的配置文件。那么你是如何命名它的,你把它放在哪里。log4j2 查找您的配置的方式如下:

  1. Log4j 将检查“log4j.configurationFile”系统属性,如果设置,将尝试使用与文件扩展名匹配的 ConfigurationFactory 加载配置。
  2. 如果未设置系统属性,则 ConfigurationFactory 将在类路径中查找 log4j2-test.properties。
  3. 如果未找到此类文件,YAML ConfigurationFactory 将在类路径中查找 log4j2-test.yaml 或 log4j2-test.yml。
  4. 如果未找到此类文件,JSON ConfigurationFactory 将在类路径中查找 log4j2-test.json 或 log4j2-test.jsn。
  5. 如果没有找到这样的文件,XML ConfigurationFactory 将在类路径中查找 log4j2-test.xml。
  6. 如果找不到测试文件,属性 ConfigurationFactory 将在类路径上查找 log4j2.properties。
  7. 如果找不到属性文件,YAML ConfigurationFactory 将在类路径中查找 log4j2.yaml 或 log4j2.yml。
  8. 如果找不到 YAML 文件,JSON ConfigurationFactory 将在类路径中查找 log4j2.json 或 log4j2.jsn。
  9. 如果找不到 JSON 文件,XML ConfigurationFactory 将尝试在类路径中找到 log4j2.xml。
  10. 如果找不到配置文件,将使用 DefaultConfiguration。这将导致日志输出转到控制台。

这个是从Log4j2 文档中偷来的。

希望有帮助。如果不能随意发布您的代码(github 链接会很好),以便我们可以更深入地检查。

于 2018-02-17T21:15:18.030 回答
0

错误消息log4j:WARN No appenders could be found for logger不是 Log4j2 警告。

它来自一个仍在类路径中某处的 log4j-1.2.x jar。

迁移到 Log4j2 时,包含log4-1.2-apijar 并确保从类路径中删除任何 log4j-1.2.x jar。

于 2018-02-18T00:49:42.997 回答