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

    声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接。
  • 相关阅读:
    【智能合约】编写复杂业务场景下的智能合约——可升级的智能合约设计模式(附Demo)
    深入浅出区块链——零知识证明
    centos设置静态IP
    jQuery学习笔记(四):attr()与prop()的区别
    jQuery学习笔记(三):选择器总结
    jQuery学习笔记(二):this相关问题及选择器
    jQuery学习笔记(一):入门
    des解密不完整,前面几位是乱码的解决办法
    Python __init__.py 作用详解
    MySQL for mac使用记录
  • 原文地址:https://www.cnblogs.com/se7end/p/14776041.html
Copyright © 2011-2022 走看看