我们知道logger
继承了Logback中的root
配置。
例如:
<root level="INFO">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>
<logger name="com.thinkaurelius.thrift" level="ERROR"/>
<logger name="org.apache.cassandra.transport" level="DEBUG">
<appender-ref ref="QUERYLOGGER" />
</logger>
在这个logback.xml
中,我们定义了一个root
,它有两个appender:
FILE
(将输出重定向到文件)STDOUT
(终端打印机)我们还添加了两个loggers
,其中我们定义了一些自定义日志记录级别和自定义appender。例如:所有DEBUG日志将转到org.apache.cassandra.transport
但是,org.apache.cassandra.transport
的所有调试信息也会显示在STDOUT
和FILE
中,因为它会从root
继承配置。
如果我要禁用STDOUT
和FILE
appender但仅为QUERYLOGGER
记录器保留org.apache.cassandra.transport
appender,该怎么办?
答案 0 :(得分:7)
阅读logback文档后。我自己找到了这个具体问题的答案:
<logger>
标记支持名为additivity
的属性,默认设置为true
。将此值设置为false
将阻止此记录器继承父项。
对于这种情况:
<logger name="org.apache.cassandra.transport" level="DEBUG" additivity='false'>
<appender-ref ref="QUERYLOGGER" />
</logger>