服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 利用logback filter过滤某个类 屏蔽某个类

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

2021-10-28 09:55FFITD Java教程

这篇文章主要介绍了利用logback filter过滤某个类 屏蔽某个类的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

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

添加JaninoEventEvaluator所需要的依赖包

?
1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.codehaus.janino/janino -->
        <dependency>
            <groupId>org.codehaus.janino</groupId>
            <artifactId>janino</artifactId>
            <version>3.1.2</version>
        </dependency>

logback中添加相应过滤条件

?
1
2
3
4
5
6
7
8
9
10
<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的实现

下面是类代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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配置

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

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

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

原文链接:https://blog.csdn.net/qqzjyywx1/article/details/109167314

延伸 · 阅读

精彩推荐
  • Java教程Java8中Stream使用的一个注意事项

    Java8中Stream使用的一个注意事项

    最近在工作中发现了对于集合操作转换的神器,java8新特性 stream,但在使用中遇到了一个非常重要的注意点,所以这篇文章主要给大家介绍了关于Java8中S...

    阿杜7482021-02-04
  • Java教程xml与Java对象的转换详解

    xml与Java对象的转换详解

    这篇文章主要介绍了xml与Java对象的转换详解的相关资料,需要的朋友可以参考下...

    Java教程网2942020-09-17
  • Java教程Java实现抢红包功能

    Java实现抢红包功能

    这篇文章主要为大家详细介绍了Java实现抢红包功能,采用多线程模拟多人同时抢红包,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    这篇文章主要介绍了Java使用SAX解析xml的示例,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程20个非常实用的Java程序代码片段

    20个非常实用的Java程序代码片段

    这篇文章主要为大家分享了20个非常实用的Java程序片段,对java开发项目有所帮助,感兴趣的小伙伴们可以参考一下 ...

    lijiao5352020-04-06
  • Java教程升级IDEA后Lombok不能使用的解决方法

    升级IDEA后Lombok不能使用的解决方法

    最近看到提示IDEA提示升级,寻思已经有好久没有升过级了。升级完毕重启之后,突然发现好多错误,本文就来介绍一下如何解决,感兴趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter写文件写不进去或缺失数据的解决

    Java BufferWriter写文件写不进去或缺失数据的解决

    这篇文章主要介绍了Java BufferWriter写文件写不进去或缺失数据的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望...

    spcoder14552021-10-18
  • Java教程小米推送Java代码

    小米推送Java代码

    今天小编就为大家分享一篇关于小米推送Java代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    富贵稳中求8032021-07-12