logback EvaluatorFilter实现同时记录多个level级别的日志

 更新时间:2023年11月17日 11:25:25   作者:爱游泳的老白  
这篇文章主要介绍了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布尔值表达式作为求值条件,求值条件在配置文件解释过成功被动态编译,布尔值表达式返回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需要依赖动态编译器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日志记录的资料请关注脚本之家其它相关文章!

相关文章

  • spring boot在启动项目之后执行的实现方法

    spring boot在启动项目之后执行的实现方法

    在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,下面这篇文章就来给大家介绍了关于spring boot在启动项目之后执行自己要执行的东西的实现方法,文中给出了详细的示例代码,需要的朋友可以参考下。
    2017-09-09
  • 简单介绍一下什么是microservice微服务

    简单介绍一下什么是microservice微服务

    这篇文章主要介绍了一下什么是microservice微服务微服务的定义,微服务到底是什么意思?什么样的架构可以叫做微服务?这篇文章可以给你答案
    2023-03-03
  • SpringBoot集成Auth0 JWT的示例代码

    SpringBoot集成Auth0 JWT的示例代码

    本文主要介绍了SpringBoot集成Auth0 JWT的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • RestTemplate如何通过HTTP Basic Auth认证示例说明

    RestTemplate如何通过HTTP Basic Auth认证示例说明

    这篇文章主要为大家介绍了RestTemplate如何通过HTTP Basic Auth认证的示例说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • IDEA JetBrains Mono字体介绍和安装教程(详解)

    IDEA JetBrains Mono字体介绍和安装教程(详解)

    这篇文章主要介绍了IDEA JetBrains Mono字体介绍和安装教程,本给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • springboot响应json null值过滤方式

    springboot响应json null值过滤方式

    这篇文章主要介绍了springboot响应json null值过滤方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java线程同步机制_动力节点Java学院整理

    Java线程同步机制_动力节点Java学院整理

    在之前,已经学习到了线程的创建和状态控制,但是每个线程之间几乎都没有什么太大的联系。可是有的时候,可能存在多个线程多同一个数据进行操作,这样,可能就会引用各种奇怪的问题。现在就来学习多线程对数据访问的控制吧
    2017-05-05
  • 详解SpringBoot中@PostMapping注解的用法

    详解SpringBoot中@PostMapping注解的用法

    在SpringBoot中,我们经常需要编写RESTful Web服务,以便于客户端与服务器之间的通信,@PostMapping注解可以让我们更方便地编写POST请求处理方法,在本文中,我们将介绍@PostMapping注解的作用、原理,以及如何在SpringBoot应用程序中使用它
    2023-06-06
  • Spring AOP简介及统一处理

    Spring AOP简介及统一处理

    AOP面向切面编程,它是一种思想,它是对某一类事情的集中处理,本文给大家介绍Spring AOP简介及统一处理,感兴趣的朋友跟随小编一起看看吧
    2023-09-09
  • 在Java中使用Jwt的示例代码

    在Java中使用Jwt的示例代码

    这篇文章主要介绍了在Java中使用Jwt的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论