如何使用log4j2为不同的类使用不同的日志记录级别?

时间:2013-10-08 17:43:48

标签: java configuration slf4j log4j2 smtpappender

在log4j2文档log4j2 java configuration中,默认配置为:

<?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>

这将为控制台生成ERROR或FATAL级别的日志记录。我的默认日志记录以相同的方式工作。我遇到的问题是当我这样做时:

<logger name="com.foo.Bar" level="TRACE"/>
<Root level="ERROR">
  <AppenderRef ref="STDOUT">
</Root>

根据文档log4j2 java configuration,这将

  

消除除com.foo.Bar之外的所有TRACE输出。

另一方面,我的实现就像

一样
<logger name="com.foo.Bar" level="TRACE"/>

甚至没有。它仍然只会打印错误日志。

问题

  • 还有其他人遇到过这个问题吗?
  • 有人可以复制吗?
  • 有谁知道如何修复它?我几乎会给别人一美元。不过,我肯定会满足于将答案标记为绿色。

以下是有关我的设置的一些信息:

Maven依赖

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

其他

我在适当的班级测试这个。我正在运行JUnit测试文件。我使用了src / main .xml文件,并且我使用了src / test .xml文件。两者都得到了相同的结果。

结束目标

我的最终目标是让特定的记录器发送SMTP请求。我很确定我知道如何做到这一点,我只是在努力解决这个小问题

1 个答案:

答案 0 :(得分:4)

我没有使用相同的字符串获取记录器。一旦我这样做,它就有效:

enter image description here enter image description here

一旦我的名字相同,我的程序就像指定的文档一样。