代码之家  ›  专栏  ›  技术社区  ›  Ev3rlasting

在Logback[重复]中重写从根目录继承的记录器的附加程序

  •  5
  • Ev3rlasting  · 技术社区  · 6 年前

    我们知道这一点 logger 继承 root 的配置在Logback中。

    例如:

    <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 ,我们定义了 它有两个附加器:

    1. FILE (将输出重定向到文件)
    2. STDOUT (终端打印机)

    我们还添加了两个 loggers 其中定义了一些定制的日志记录级别和定制的appender。例如:所有调试日志将转到QUERYLOGGER appender(磁盘上的另一个文件),用于 org.apache.cassandra.transport

    但是,的所有调试信息 组织。阿帕奇。卡桑德拉。运输 也出现在 标准装置 文件 因为它继承了

    如果我想禁用 标准装置 文件 追加但保留 QUERYLOGGER 仅适用于 组织。阿帕奇。卡桑德拉。运输 记录器?

    1 回复  |  直到 6 年前
        1
  •  9
  •   Ev3rlasting    6 年前

    阅读logback文档后。我自己找到了这个具体问题的答案:

    <logger> 标记支持一个名为 additivity 默认设置为 true .将此值转换为 false 将阻止此记录器从父级继承。

    对于这种情况:

    <logger name="org.apache.cassandra.transport" level="DEBUG" additivity='false'>
      <appender-ref ref="QUERYLOGGER" />
    </logger>
    

    Logback additivity example

    Logback documentation