2013-12-10 34 views
0

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

<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过滤器。但是,这是真的吗?这看起来像一个相当平凡的用例。

回答

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>