如何用logback创build2个不同的ROOTlogging器?
我很高兴地使用SLF4J和logback,并为ROOTlogging器使用了2个appender 。
<root level="DEBUG"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root>
我们怎么能为两个appender有不同的日志级别? 我仍然需要所有ROOTlogging器消息。
- DEBUG – 标准输出
- INFO级别的文件
所有日志都需要成为输出的一部分(所以需要ROOTlogging器)。
所有的帮助是热烈的赞赏。 谢谢。
你永远不会有一个以上的根logging器,所以你的问题有点误导。 你在找什么是如何微调每个appenderlogging哪些事件。
为此,你为每个appender添加一个ThresholdFilter:
http://logback.qos.ch/manual/filters.html#thresholdFilter
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter>
configurationFILE-appender的级别INFO和STDOUT的DEBUG。
编辑:我不得不对另一个答案负责,这是错误的:是的,你可以在configuration中有多个根元素 。 但是,这并不能创build一个以上的根目录,这就是问题标题所要求的。 此外, http : //logback.qos.ch/manual/configuration.html#syntax (突出显示我的)下面的logback手册:
尽pipe如此,configuration文件的基本结构可以描述为<configuration>元素,接着是零个或多个<appender>元素,接着是零个或多个<logger>元素, 最多是一个 <root>元素。
它可能有用,但至less是违反惯例。
以前的答案是错误的 :你可以有多个root
元素,每个元素都有一个关联的日志logginglevel
和一个appender-ref
(我正在使用logback.version> 1.0.13
)在这种情况下,你也必须在你的内部放置一个FILTER这样的appender:
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"> <resetJUL>true</resetJUL> </contextListener> <!-- To enable JMX Management --> <jmxConfigurator/> <appender name="console-info" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern> </encoder> </appender> <appender name="console-debug" 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{ddMMMyyyy HH:mm:ss.SS}]%-5level %logger{45} - %msg %n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="console-info"/> </root> <root level="debug"> <appender-ref ref="console-debug"/> </root>