logback EvaluatorFilter實現同時記錄多個level級別的日志
使用求值過濾器
為了方便日志查看,想將不同level的日志輸出到同一個日志文件里.例如:我想將trace & debug級別的日志輸出到一個文件里.這時候使用求值過濾器:ch.qos.logback.core.filter.EvaluatorFilter就非常方便了.
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <!-- 默認為 ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
<expression>return message.contains("billing");</expression>
</evaluator>
<OnMatch>ACCEPT </OnMatch>
<OnMismatch>DENY</OnMismatch>
</filter>
evaluator: 它以任意的java布爾值表達式作為求值條件,求值條件在配置文件解釋過成功被動態(tài)編譯,布爾值表達式返回true就表示符合過濾條件。evaluator有個子標簽<expression>,用于配置求值條件。
expression: 求值表達式作用于當前日志
logback向求值表達式暴露日志的各種字段

例子
輸出DEBUG&TRACE的信息到一個日志文件里
<!-- 輸出DEBUG&TRACE的信息到日志文件里 -->
<appender name="FILE-SQL" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<!-- DEBUG=10000 TRACE=5000 -->
<expression><![CDATA[ return (level==10000 || level==5000); ]]></expression>
</evaluator>
<OnMatch>ACCEPT </OnMatch>
<OnMismatch>DENY</OnMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOG_DIR}/sql_dev_%d{yyyy-MM-dd}_%i.log</fileNamePattern>
<!-- each file should be at most 100MB, keep 30 days worth of history, but at most 10GB -->
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>注意: EvaluatorFilter需要依賴動態(tài)編譯器janino,可以使用下面的方式來引入:
Maven:
<dependency> <groupId>org.codehaus.janino</groupId> <artifactId>janino</artifactId> <version>3.1.8</version> </dependency>
Gradle:
implementation 'org.codehaus.janino:janino:3.1.8'
以上就是logback EvaluatorFilter實現同時記錄多個level級別的日志的詳細內容,更多關于logback EvaluatorFilter日志記錄的資料請關注腳本之家其它相關文章!
相關文章
SpringBoot讀寫xml上傳到AWS存儲服務S3的示例
這篇文章主要介紹了SpringBoot讀寫xml上傳到S3的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-10-10
Spring Boot整合Mybatis Plus和Swagger2的教程詳解
這篇文章主要介紹了Spring Boot整合Mybatis Plus和Swagger2的教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
Mybatis-Plus中getOne方法獲取最新一條數據的示例代碼
這篇文章主要介紹了Mybatis-Plus中getOne方法獲取最新一條數據,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05

