如何使用logback创建2个不同的ROOT记录器?

Dim*_*ele 41 logging logback root slf4j

我很高兴使用SLF4J进行回溯并使用2个appender作为ROOT记录器.

<root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</root>
Run Code Online (Sandbox Code Playgroud)

我们怎样才能为两个appender提供不同的日志级别?我仍然需要所有ROOT-logger消息.

  • STDOUT的DEBUG -level
  • 信息的INFO -level

所有日志都需要成为输出的一部分(因此需要ROOT记录器).

she*_*tem 53

你不会有多个root-logger,所以你的问题有点误导.您正在寻找的是如何微调每个appender记录的事件.

为此,您为每个appender添加一个ThresholdFilter:

http://logback.qos.ch/manual/filters.html#thresholdFilter

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  <level>INFO</level>
</filter>
Run Code Online (Sandbox Code Playgroud)

为FILE-appender配置级别INFO,为STDOUT配置DEBUG.

编辑:我不得不质疑另一个答案是否错误:是的,您可以在配置中拥有多个根元素.但这不会创建多个root- logger,这就是问题的标题所要求的.此外,logback手册在http://logback.qos.ch/manual/configuration.html#syntax(突出显示我的)下说明:

尽管如此,配置文件的基本结构可以描述为<configuration>元素,后跟零个或多个<appender>元素,后跟零个或多个<logger>元素,后跟最多一个 <root>元素.

它可能会起作用,但至少它违背惯例.