【问题标题】:Different Levels for Different Appendors不同附加器的不同级别
【发布时间】:2013-12-10 00:28:04
【问题描述】:

我需要为一个 java 应用程序生成 2 个日志文件。一种是针对系统管理员的,他们只想查看 INFO 或更高级别的内容。他们不想看到 TRACE 或 DEBUG 级别,这会大大增加日志文件的大小。但是我们也想生成一个日志文件,如果出现问题可以发送给工程师。工程师会想要所有的细节。这将包括所有级别:TRACE、DEBUG、INFO、WARN 和 ERROR。我认为它会像这样简单:

<logger level="INFO" additivity="false" name="com.mycompany">
    <appender-ref ref="NOT_DETAILED_FILE" />
</logger>       

<logger level="TRACE" additivity="true" name="com.mycompany">
    <appender-ref ref="DETAILED_FILE" />
</logger>

但我没有得到我所期望的。 TRACE 级别的消息将进入通用文件。我已阅读有关自定义 logback 过滤器的信息。但这真的有必要吗?这似乎是一个相当微不足道的用例。

【问题讨论】:

    标签: logback


    【解决方案1】:

    找到了答案。删除您为包“com.mycompany”定义的第二个记录器。这没有意义。诀窍是向附加器添加一个“不详细”的过滤器。

    <appender name="NOT_DETAILED_FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/not-detailed.log</file>
        <append>false</append>
        <encoder>
            <pattern>%date{HH:mm:ss} %-5level %logger{175} - %msg%n</pattern>
        </encoder>
        <!-- filter out any messages lower than INFO, like DEBUG or TRACE -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>
    
    <appender name="DETAILED_FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/detailed.log</file>
        <append>false</append>
        <encoder>
            <pattern>%date{HH:mm:ss} %-5level %logger{175} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <logger name="com.mycompany" level="trace"/>
    
    <root level="warn">
        <appender-ref ref="DETAILED_FILE" />
        <appender-ref ref="NOT_DETAILED_FILE" />
    </root>
    

    【讨论】:

      猜你喜欢
      • 2011-01-19
      • 2012-08-09
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 2012-06-24
      • 1970-01-01
      相关资源
      最近更新 更多