不同附属物的不同层次

时间:2013-12-10 00:28:05

标签: logback

我需要为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过滤器的内容。但这真的必然吗?这似乎是一个相当简单的用例。

1 个答案:

答案 0 :(得分:0)

找到答案。删除为包“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>