不同Logback追溯程序的特定于包的日志记录级别 [英] Package-specific logging levels for different Logback appenders
问题描述
我有这个简单的Logback配置文件,包含两个appender和一些基于包名称的自定义日志记录级别。
I have this simple Logback config file, containing two appenders and some custom logging levels based on package name.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<pattern>%date{HH:mm}\t%-5level\t%msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>my_logger.log</file>
<encoder>
<charset>UTF-8</charset>
<pattern>%date{dd MMM HH:mm}|%class{0}|%-5level|%msg%n</pattern>
</encoder>
</appender>
<!-- custom logging levels -->
<logger name="myapp.package1" level="INFO" />
<logger name="myapp.package2" level="INFO" />
<root>
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
使用此配置,自定义日志记录级别将应用于两个附加程序。
With this configuration, the custom logging levels are applied for both appenders.
如何更改它,使 ConsoleAppender
使用这些自定义日志记录级别,而 FileAppender
符合默认级别?
How can I change it so that only ConsoleAppender
uses these custom logging levels, while FileAppender
sticks to default levels?
推荐答案
如果您不想实现自定义过滤器,一个固定的阈值(在 INFO
中):
If you don't want to implement a custom filter, you can create a new appender with a fixed threshold (in you case INFO
):
<appender name="INFO_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
...
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
然后,对于您的自定义日志记录级别,添加 INFO_CONSOLE
和您的 FILE
附加程序。 additivity =false
属性阻止记录器记录到从继承的
。 CONSOLE
根
Then, for your custom logging levels add the INFO_CONSOLE
and your FILE
appender. The additivity="false"
attribute prevents the logger from logging to the CONSOLE
appender inherited from root
.
<logger name="myapp.package1" additivity="false">
<appender-ref ref="INFO_CONSOLE" />
<appender-ref ref="FILE" />
</logger>
这应该记录 DEBUG
FILE
和 CONSOLE
追加者,除了 myapp.package1
将只记录 INFO
以及 CONSOLE
。
This should log DEBUG
and above to the FILE
and CONSOLE
appenders, except for myapp.package1
which will only log INFO
and above to CONSOLE
.
这篇关于不同Logback追溯程序的特定于包的日志记录级别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!