利用logback filter过滤某个类 屏蔽某个类

 更新时间:2021年07月29日 14:35:30   作者:FFITD  
这篇文章主要介绍了利用logback filter过滤某个类 屏蔽某个类的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

logback filter过滤某个类 屏蔽某个类

使用logback配置日志文件,有的时候需要我们过滤或者屏蔽掉某个类的日志,便可以通过以下方法实现

添加JaninoEventEvaluator所需要的依赖包

<!-- https://mvnrepository.com/artifact/org.codehaus.janino/janino -->
        <dependency>
            <groupId>org.codehaus.janino</groupId>
            <artifactId>janino</artifactId>
            <version>3.1.2</version>
        </dependency>

logback中添加相应过滤条件

<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
                <evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator"> 
                    <expression>logger.contains("UserController")</expression>
                </evaluator>
                <OnMismatch>NEUTRAL</OnMismatch>
                <OnMatch>DENY</OnMatch>
            </filter>
            ............
</appender>

语句<expression>中含义是是否logger名包含UserController,返回一个Boolean值,当<OnMatch>时不进行log记录

LogBack的filter的应用

最近在做业务数据的采集。遇到了一个问题,那就是如何通过记录日志的方式捕获需要的业务数据(这里我需要的是某个对象的json格式的数据)。我们知道如果采用log.info的形式记录日志,尽管我们可以写多个appender让info级别的日志信息输出到两个不同的文件,但是记录业务数据的文件里面也会有其他info级别的日志信息。那么如何过滤呢,就用到了LogBack的filter。

LogbackFilter介绍

lockback的过滤器可以过滤记录日志的内容,然后返回FilterReply类型的枚举类。从而将不符合条件的日志信息过滤掉。

Logback提供两类Filter,一类是Regular Filter;另外一类是Turbo Filter。

Regular Filter主要应用在appeder上,只在appender级别起作用,Appender实例上可以绑定一个Regular Filter实例链。Regular Filter继承实现”ch.qos.logback.core.filter.Filter”类,自定义自己的regular filter需要继承ch.qos.logback.core.filter.Filter类,并实现decide()方法。

TurboFilter对象绑定到日志记录上下文。因此,不仅在使用给定的appender时调用它们,而且每次都发出日志记录请求。它们的范围比附加到附加器的过滤器更宽。更重要的是,它们在LoggingEvent对象创建之前被调用 。 TurboFilter对象不需要实例化日志记录事件来过滤日志记录请求。因此,turbo过滤器旨在用于记录事件的高性能过滤,甚至在创建事件之前。要实现该类型的filter需要继承ch.qos.logback.classic.turbo.TurboFilter;类具体的实现可参考LogBack官网-过滤器实现

自定义regular Filter

由于我的业务是指针对info级别的日志所以没必要实现全局的turboFiter,这里只给出regular Filter的实现

下面是类代码

package com.qf58.srm.pub;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;
/**
 * @Author: WangZhan
 * @Description:
 * @Date Created in 11:53 2018/7/26.
 */
public class BdLogMessageFilter extends Filter<ILoggingEvent> {
    @Override
    public FilterReply decide(ILoggingEvent iLoggingEvent) {
        if (iLoggingEvent.getMessage() != null && iLoggingEvent.getMessage().startsWith("{") && iLoggingEvent
                .getMessage().endsWith("}")){
            return FilterReply.ACCEPT;
        }
        return  FilterReply.DENY;
    }
}

下面是logback配置

这里写图片描述

最后运行自己的程序就可以看到打印效果。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java的Jackson自定义序列化详解

    Java的Jackson自定义序列化详解

    这篇文章主要介绍了Java的Jackson自定义序列化详解,对比序列化器,可以看到,使用@JsonValue注解已经将Leader类的序列化方式改变了,进而影响了Country类,再来执行test7()测试反序列化,结果与之前是一致的,需要的朋友可以参考下
    2023-11-11
  • 利用SpringBoot和LiteFlow解锁复杂流程

    利用SpringBoot和LiteFlow解锁复杂流程

    随着业务的复杂化,企业需要更加高效、便捷地管理自己的业务流程,这就需要借助一些流程引擎实现,今天,我们就来介绍一种基于Java语言开发的轻量级工作流引擎——LiteFlow,以及如何在Spring Boot框架中集成它,从而提高企业的工作效率和开发效率
    2023-06-06
  • Java获取请求头信息的操作步骤

    Java获取请求头信息的操作步骤

    这篇文章主要介绍了Java获取请求头信息,本文分步骤结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 详解Mybatis极其(最)简(好)单(用)的一个分页插件

    详解Mybatis极其(最)简(好)单(用)的一个分页插件

    这篇文章主要介绍了详解Mybatis极其(最)简(好)单(用)的一个分页插件,非常具有实用价值,需要的朋友可以参考下。
    2016-12-12
  • SpringMVC实现参数校验配置方法

    SpringMVC实现参数校验配置方法

    这篇文章主要介绍了SpringMVC实现参数校验的配置方式,Spring MVC会抛出MethodArgumentNotValidException异常,并将错误信息绑定到相应的字段上,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • 阿里资深技术专家:在各阶段中3年经验的java程序员应该具备哪些技术能力

    阿里资深技术专家:在各阶段中3年经验的java程序员应该具备哪些技术能力

    这篇文章主要介绍了阿里资深技术专家:在各阶段中3年经验的java程序员应该具备哪些技术能力,本文给大家列举了一些内容,大家可以根据自己需要有方法的掌握,感兴趣的朋友跟随小编一起看看吧
    2020-07-07
  • Redis中String字符串和sdshdr结构体超详细讲解

    Redis中String字符串和sdshdr结构体超详细讲解

    这篇文章主要介绍了Redis中String字符串和sdshdr结构体,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-04-04
  • Java三种求水仙花数的方法

    Java三种求水仙花数的方法

    本篇文章通过求水仙花数的实例来让大家对JAVA求数的概念和方法有更深入的理解和应用,学习参考下吧。
    2018-02-02
  • Spring Cloud之配置中心的搭建

    Spring Cloud之配置中心的搭建

    这篇文章主要介绍了Spring Cloud之配置中心的搭建,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 浅谈JAVA工作流的优雅实现方式

    浅谈JAVA工作流的优雅实现方式

    这篇文章主要介绍了浅谈JAVA工作流的优雅实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11

最新评论