Logback 忽略父包的记录器
Logback ignore logger of parent package
Logback 忽略父包的记录器。
我有那些附加程序:
appender
<appender name="fileAppender1" class="ch.qos.logback.core.FileAppender">
<file>myLogFile1.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="fileAppender2" class="ch.qos.logback.core.FileAppender">
<file>myLogFile2.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
和 3 个记录器:
记录器 1
<logger name="my" level="INFO" additivity="false" >
<appender-ref ref="fileAppender1" />
</logger>
记录器 2
<logger name="my.test" level="DEBUG" additivity="false" >
<appender-ref ref="console" />
</logger>
记录器 3
<root level="TRACE">
<appender-ref ref="fileAppender2" />
</root>
- 如果我使用其中的三个,我只能使用第二个记录器。 (最权威的)
- 如果我删除
additivity="false"
所有记录器都写相同级别的相同信息(最高 - INFO)
如何配置 root logger 收集并通过appender 打印的logback 所有TRACE 日志消息,my
logger 收集并打印打印包 my
的所有 DEBUG 消息,不包含包 my.test
和 my.test
记录器收集并打印所有 INFO包 my.test
及以下的消息?
使用级别过滤器
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
因此你的logback.xml会变成
<appender name="fileAppender1" class="ch.qos.logback.core.FileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>myLogFile1.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="fileAppender2" class="ch.qos.logback.core.FileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>myLogFile2.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<logger name="my" level="INFO" additivity="false" >
<appender-ref ref="fileAppender1" />
</logger>
<logger name="my.test" level="DEBUG" additivity="false" >
<appender-ref ref="console" />
</logger>
<root level="TRACE">
<appender-ref ref="fileAppender2" />
</root>
更新
如果您需要 ERROR 和 WARN,请将 ThresholdFilter 与 WARN 一起使用(如下所示),如果您需要信息、错误和警告,请将阈值过滤器用作信息(我相信这是默认行为)
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
Logback 忽略父包的记录器。
我有那些附加程序:
appender
<appender name="fileAppender1" class="ch.qos.logback.core.FileAppender">
<file>myLogFile1.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="fileAppender2" class="ch.qos.logback.core.FileAppender">
<file>myLogFile2.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
和 3 个记录器:
记录器 1
<logger name="my" level="INFO" additivity="false" >
<appender-ref ref="fileAppender1" />
</logger>
记录器 2
<logger name="my.test" level="DEBUG" additivity="false" >
<appender-ref ref="console" />
</logger>
记录器 3
<root level="TRACE">
<appender-ref ref="fileAppender2" />
</root>
- 如果我使用其中的三个,我只能使用第二个记录器。 (最权威的)
- 如果我删除
additivity="false"
所有记录器都写相同级别的相同信息(最高 - INFO)
如何配置 root logger 收集并通过appender 打印的logback 所有TRACE 日志消息,my
logger 收集并打印打印包 my
的所有 DEBUG 消息,不包含包 my.test
和 my.test
记录器收集并打印所有 INFO包 my.test
及以下的消息?
使用级别过滤器
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
因此你的logback.xml会变成
<appender name="fileAppender1" class="ch.qos.logback.core.FileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>myLogFile1.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="fileAppender2" class="ch.qos.logback.core.FileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>myLogFile2.log</file>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%d [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<logger name="my" level="INFO" additivity="false" >
<appender-ref ref="fileAppender1" />
</logger>
<logger name="my.test" level="DEBUG" additivity="false" >
<appender-ref ref="console" />
</logger>
<root level="TRACE">
<appender-ref ref="fileAppender2" />
</root>
更新
如果您需要 ERROR 和 WARN,请将 ThresholdFilter 与 WARN 一起使用(如下所示),如果您需要信息、错误和警告,请将阈值过滤器用作信息(我相信这是默认行为)
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>