【问题标题】:Logback Configuration: Always include logger?Logback 配置:总是包括记录器?
【发布时间】:2014-09-26 19:17:27
【问题描述】:

我在我的应用程序中使用 SLF4J 和 LogBack。我正在使用几个也使用 SLF4J 的第 3 方库。为了隐藏他们的日志,我将根日志级别设置为“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>

很遗憾,上面显示的配置对我来说无法正常工作。如果日志级别为 WARN 或更高,我只会收到来自“MyLogger”类的消息。

所以回顾一下我想要的:

  • 一般情况下,只应记录级别为 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.* 的所有内容都会被记录下来。由于我的应用程序中有一个特定的记录器类,因此结果与预期的结果相同。

【问题讨论】:

    标签: logging configuration slf4j logback


    【解决方案1】:

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

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

    参考logackdocumentation

    【讨论】:

    • 是的,它与包完美配合,正如我在问题的“编辑”中所写(StackOverflow 不允许我自己回答问题)。但你必须承认,这个“文档”是一堵巨大的文字墙,没有明显的结构。
    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    相关资源
    最近更新 更多