logback EvaluatorFilter实现同时记录多个level级别的日志
使用求值过滤器
为了方便日志查看,想将不同level的日志输出到同一个日志文件里.例如:我想将trace & debug级别的日志输出到一个文件里.这时候使用求值过滤器:ch.qos.logback.core.filter.EvaluatorFilter就非常方便了.
1 2 3 4 5 6 7 | < 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布尔值表达式作为求值条件,求值条件在配置文件解释过成功被动态编译,布尔值表达式返回true就表示符合过滤条件。evaluator有个子标签<expression>,用于配置求值条件。
expression: 求值表达式作用于当前日志
logback向求值表达式暴露日志的各种字段
例子
输出DEBUG&TRACE的信息到一个日志文件里
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!-- 输出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需要依赖动态编译器janino,可以使用下面的方式来引入:
Maven:
1 2 3 4 5 | < dependency > < groupId >org.codehaus.janino</ groupId > < artifactId >janino</ artifactId > < version >3.1.8</ version > </ dependency > |
Gradle:
以上就是logback EvaluatorFilter实现同时记录多个level级别的日志的详细内容,更多关于logback EvaluatorFilter日志记录的资料请关注脚本之家其它相关文章!
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
Intelli IDEA安装Scala插件并安装Scala软件和配置环境变量的详细教程
这篇文章主要介绍了Intelli IDEA安装Scala插件并安装Scala软件和配置环境变量的详细教程,需要的朋友可以参考下2020-10-10Mybatis-Plus中分页插件PaginationInterceptor的使用
我们在开发的过程中,经常会遇到分页操作,本文主要介绍了Mybatis-Plus中分页插件PaginationInterceptor的使用,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧2023-06-06
最新评论