Logback配置:始终包含记录器?

时间:2014-08-04 10:26:00

标签: logging configuration slf4j logback

我在我的应用程序中使用SLF4J和LogBack。我使用了几个也使用SLF4J的第三方库。为了隐藏他们的日志,我已将根日志级别设置为" WARN"。但是,对于我自己的记录器,我想在日志输出中显示所有内容(无论消息级别如何)。到目前为止,这是我的配置:

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>[%level] %date{YYYY-MM-dd HH:mm:ss} [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
  </appender>

  <!-- For all loggers, use WARN as minimum level to avoid log overflow -->
  <root level="WARN">
     <appender-ref ref="STDOUT"  />
  </root>

  <!-- For the specific "com.example.MyLogger.java", use log level DEBUG -->
  <logger name="MyLogger" level="DEBUG">
     <appender-ref ref="STDOUT" />
  </logger>

  <consolePlugin />
</configuration>

不幸的是,上方显示的配置对我不起作用。我只收到来自&#34; MyLogger&#34;如果他们的日志级别为WARN或更高级别,则为class。

所以回顾一下我想要的东西:

  • 通常,只应记录级别为WARN或以上的邮件...
  • ...除了一个特定的记录器类,其中所有内容都应记录,而不管级别

这可能吗?我该怎么做?

谢谢,

艾伦

编辑:经过实验,我自己找到了一个解决方案。这是logback.xml:

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>[%level] %date{YYYY-MM-dd HH:mm:ss} [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
  </appender>


  <logger name="com.example" level="ALL">
    <appender-ref ref="STDOUT" />
  </logger>

  <root level="WARN">
    <appender-ref ref="STDOUT"  />
  </root>

  <consolePlugin />
</configuration>

请注意,第一个记录器不对具体记录器类设置限制,而是对限定类名称的前缀设置限制。因此,将记录来自 com.example。* 的所有内容。由于我的应用程序中有一个特定的记录器类,因此结果与预期相同。

1 个答案:

答案 0 :(得分:2)

您应该提及要更改日志级别的程序包,而不仅仅是类

<logger name="com.example.MyLogger" level="DEBUG" />

参考logack documentation