首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >logback的RollingFileAppender没有使用EvaluatorFilter滚动文件

logback的RollingFileAppender没有使用EvaluatorFilter滚动文件
EN

Stack Overflow用户
提问于 2018-03-01 19:16:11
回答 1查看 504关注 0票数 0

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

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
<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> 
EN

回答 1

Stack Overflow用户

发布于 2018-03-02 19:28:30

我有点懒得在本地测试它,但我知道可能出了什么问题:-)在logback文档中,它是编写的:

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

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

另一种推测是你没有正确地引用附录,但是问题中没有足够的细节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49057126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档