【问题标题】:logback's RollingFileAppender is not rolling file with EvaluatorFilterlogback 的 RollingFileAppender 不是使用 EvaluatorFilter 滚动文件
【发布时间】:2018-03-01 19:16:11
【问题描述】:

EvaluatorFilter如下使用时,Logback框架的ch.qos.logback.core.rolling.RollingFileAppender不滚动文件:

<appender name="APPLICATION-INFO"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.root}/${CONTEXT_NAME}-INFO.log</file>
    <append>true</append>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.root}/${CONTEXT_NAME}-INFO-%d{yyyyMMdd}.log
        </fileNamePattern>
    </rollingPolicy>
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
        <evaluator> 
            <expression>return (level == INFO || level == WARN);</expression>
        </evaluator>
        <OnMismatch>DENY</OnMismatch>
        <OnMatch>ACCEPT</OnMatch>
    </filter>
    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
        <layout class="com.xxx.yyyy.zzz.logging.json.JsonLayout">
            <timestampFormat>${timestampFormat}</timestampFormat>
            <includeMDC>false</includeMDC>
        </layout>
        <immediateFlush>true</immediateFlush>
    </encoder>
</appender>

但是下面的配置会滚动日志文件。

<appender name="APPLICATION-ERROR"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.root}/${CONTEXT_NAME}-ERROR.log</file>
    <append>true</append>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.root}/${CONTEXT_NAME}-ERROR-%d{yyyyMMdd}.log
        </fileNamePattern>
    </rollingPolicy>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
        <layout class="com.xxx.yyy.zzz.logging.json.JsonLayout">
            <timestampFormat>${timestampFormat}</timestampFormat>
            <includeMDC>false</includeMDC>
        </layout>
        <immediateFlush>true</immediateFlush>
    </encoder>
</appender> 

【问题讨论】:

    标签: logback rollingfileappender


    【解决方案1】:

    我有点懒得在本地进行测试,但我知道可能出了什么问题 :-) 在docs of logback 中是这样写的:

    由于各种技术原因,翻转不是时钟驱动的,而是 取决于日志记录事件的到来。例如,3 月 8 日 2002,假设 fileNamePattern 设置为 yyyy-MM-dd(每天 翻转),午夜后第一个事件的到来将触发 翻车。如果在此期间没有记录事件,例如 23 分钟和 午夜后 47 秒,然后翻转将实际发生在 3 月 9 日凌晨 00:23'47,而不是凌晨 0:00。

    基于此,可能的猜测是您配置的默认JaninoEventEvaluator 没有接受适当的日志记录事件。

    另一种猜测是您没有正确引用附加程序,但问题中没有足够的详细信息。

    【讨论】:

      猜你喜欢
      • 2018-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 2014-08-16
      • 2016-11-08
      • 1970-01-01
      相关资源
      最近更新 更多