【发布时间】: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