zoukankan      html  css  js  c++  java
  • Logback自定义过滤器

    最近在处理日志输出的时候,为了方便排除问题,就把SQL的SELECT,INSERT,UPDATE,DELETE等操作做了日志记录。

    框架用的是MyBatis-Plus的日志输出。

    这里输出的时候,查询和修改的日志输出级别不一样,查询的是TRACE,修改的是DEBUG,然后使用Logback.xml配置过滤器的时候发现,Level只能配置一个级别。

    所以自己写了个过滤器。

    增加了适配模式,EQ,LE,GE三种匹配规则。

    代码如下:

    public enum FilterModel {
    
        /**
         * 相等
         */
        EQ,
        /**
         * 小于等于
         */
        LE,
        /**
         * 大于等于
         */
        GE
    }
    public class ManyLevelFilter extends AbstractMatcherFilter<ILoggingEvent> {
    
        private Level level;
        private FilterModel model;
    
        @Override
        public FilterReply decide(ILoggingEvent event) {
            if (!isStarted()) {
                return FilterReply.NEUTRAL;
            }
            if (FilterModel.EQ.equals(this.model)) {
                if (event.getLevel().equals(this.level)) {
                    return this.onMatch;
                }
            } else if (FilterModel.LE.equals(this.model)) {
                if (event.getLevel().toInt() <= this.level.toInt()) {
                    return this.onMatch;
                }
            } else if (FilterModel.GE.equals(this.model)) {
                if (event.getLevel().toInt() >= this.level.toInt()) {
                    return this.onMatch;
                }
            }
            return this.onMismatch;
        }
    
        @Override
        public void start() {
            if (this.level != null && this.model != null) {
                super.start();
            }
        }
    
        public void setLevel(Level level) {
            this.level = level;
        }
    
        public void setModel(FilterModel model) {
            this.model = model;
        }
    }

    xml中配置:

    <filter class="com.log.filter.ManyLevelFilter">
    <!-- 过滤的级别 -->
    <level>DEBUG</level>
    <!-- 过滤模式 -->
    <model>LE</model>
    <!-- 匹配时的操作:接收(记录) -->
    <onMatch>ACCEPT</onMatch>
    <!-- 不匹配时的操作:拒绝(不记录) -->
    <onMismatch>DENY</onMismatch>
    </filter>

    作者:Se7end

    声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接。
  • 相关阅读:
    jmeter响应结果乱码问题
    JMeter 脚本请求错误 HTTP Status 415 的解决
    使用fiddler进行genymotion安卓虚拟机手机抓包
    Android模拟器Genymotion安装使用教程详解
    java基础-数组
    Qt类继承图
    Linux-磁盘管理小结
    User and User Groups in Linux
    Qt5.3编译错误——call of overloaded ‘max(int int)’is ambiguous
    i++ and ++i efficiency
  • 原文地址:https://www.cnblogs.com/se7end/p/14776041.html
Copyright © 2011-2022 走看看