当我们需要对日志的打印要做一些范围的控制的时候,通常都是通过为各个Appender设置不同的Filter配置来实现。在Logback中自带了两个过滤器实现:ch.qos.logback.classic.filter.LevelFilter和ch.qos.logback.classic.filter.ThresholdFilter,用户可以根据需要来配置一些简单的过滤规则,下面先简单介绍一下这两个原生的基础过滤器。

ch.qos.logback.classic.filter.LevelFilter过滤器的作用是通过比较日志级别来控制日志输出。下面是一个只记录日志级别为ERROR的例子:

logs/error.logds ERRORACCEPTDENY%-4relative [%thread] %-5level %logger{30} - %msg%n

LevelFilter通过定义日志级别,并设置匹配与不匹配的处理策略来控制针对某个级别日志的输出策略。当我们要设置多个不同级别的日志策略的时候,如果仅依靠这个过滤器,我们就要级联的定义多个filter来控制才能实现,显然不是很方便,所以此时我们就可以使用ch.qos.logback.classic.filter.ThresholdFilter过滤器来控制了。比如下面的配置,实现了只记录WARN及以上级别的控制,比WARN级别低(如:INFO、DEBUG、TRACE)都不会记录。

logs/warn_error.logWARN%-4relative [%thread] %-5level %logger{30} - %msg%n

通过上述介绍的两个过滤器来控制日志的记录级别已经满足绝大部分的需求,但是可能还是会出现一些特殊情况,需要自定义复杂的过滤规则,比如想过滤掉一些框架中的日志,通过自带的几个过滤器已经无法完全控制,并且也不希望修改框架源码来实现。这个时候,我们就可以自己来实现过滤器,并配置使用。实现的方式也很简单,只需要实现Logback提供的ch.qos.logback.core.filter.Filter接口即可。

下面举一个简单的例子:

public class MyFilter extends Filter { @Override public FilterReply decide(ILoggingEvent event) { if (event.getLevel() == Level.ERROR) { switch (event.getLoggerName()) { case "org.springframework.cloud.sleuth.instrument.web.ExceptionLoggingFilter": return FilterReply.DENY; } return FilterReply.ACCEPT; } return FilterReply.DENY; }}

上面过滤器的功能主要是通过重写decide,限制了org.springframework.cloud.sleuth.instrument.web.ExceptionLoggingFilter类输出ERROR级别的日志记录。在编写好自己的过滤器实现之后,只需要在Appender中配置使用就能实现自己需要的灵活过滤规则了:

logs/warn_error.log%-4relative [%thread] %-5level %logger{30} - %msg%n

文章转载于:https://www.jianshu.com/p/d6360c517264

原著是一个有趣的人,若有侵权,请通知删除

logback日志pattern_Logback pattern transactionid 中如何自定义灵活的日志过滤规则相关推荐

  1. Logback中如何自定义灵活的日志过滤规则

    当我们需要对日志的打印要做一些范围的控制的时候,通常都是通过为各个Appender设置不同的Filter配置来实现.在Logback中自带了两个过滤器实现: ch.qos.logback.classi ...

  2. 4j 设置日志保存天数_MySQL中的这几类日志,你一定要知道

    前言: 在 MySQL 系统中,有着诸多不同类型的日志.各种日志都有着自己的用途,通过分析日志,我们可以优化数据库性能,排除故障,甚至能够还原数据.这些不同类型的日志有助于我们更清晰的了解数据库,在日 ...

  3. php打印错误日志到本地,php中如何实现打印错误日志的功能

    php中如何实现打印错误日志的功能 发布时间:2020-08-13 09:40:29 来源:亿速云 阅读:76 作者:小新 这篇文章将为大家详细讲解有关php中如何实现打印错误日志的功能,小编觉得挺实 ...

  4. tomcat mysql报错日志在哪_mysql 中记录用户登录错误日志...-Tomcat远程调试-java书上小例子6_169IT.COM...

    接口:  java不支持多继承性,即一个类只能有一个父类,单继承性使得java简单,易于管理程序,为了克服单继承的缺点,java使用接口,一个类可以使用多个接口 使用 interface来定义接口 接 ...

  5. ELK日志分析系统搭建以及springboot日志发送到ELK中

    前言 安装之前服务器必须装了Java环境,我们这里安装的是7.7.0版本,而且7.7.0版本还必须要求jdk11以上.,最好跟我安装的路径保持一致/usr/local/elk,千万不要在root 安装 ...

  6. mysql general bin区别_MySQL中几种常见的日志

    前言: 在 MySQL 系统中,有着诸多不同类型的日志.各种日志都有着自己的用途,通过分析日志,我们可以优化数据库性能,排除故障,甚至能够还原数据.这些不同类型的日志有助于我们更清晰的了解数据库,在日 ...

  7. SpringAOP+自定义注解实现日志功能

    SpringAOP+自定义注解实现日志功能 上篇文章讲解了springAOP实现简单日志功能,这次讲解使用自定义注解实现日志功能.具体pom.Spring.SpringMVC的配置不再进行讲解,详情点 ...

  8. springboot中配置logback实现打印控制台、写出文件,控制日志级别的方式

    介绍 官方简介 Logback是由log4j创始人设计的又一个开源日志组件. logback当前分成三个模块:logback-core,logback- classic和logback-access. ...

  9. 自定义Flume拦截器,并将收集的日志存储到Kafka中(案例)

    1.引入POM文件 如果想调用Flume,需要引入flume相关的jar包依赖,jar包依赖如下: <?xml version="1.0" encoding="UT ...

最新文章

  1. Nodejs学习笔记(五)--- Express安装入门与模版引擎ejs
  2. NYOJ 16(矩形嵌套)
  3. VS2010中使用正则表达式替换时无法使用回车符的解决方法
  4. Vulkan Video实现GPU加速视频编码/解码
  5. android插件化之路
  6. 离婚率逐年上升,数据分析告诉你背后的主因竟然是它!
  7. 2011计算机等级考试二级c语言公共基础教程.doc,2011年全国计算机等级考试二级c语言公共基础知识复习100题及答案.doc...
  8. javascript-mqtt
  9. 拓端tecdat|R和Python机器学习:广义线性回归glm,样条glm,梯度增强,随机森林和深度学习模型分析
  10. Tomcat基础教程(三)
  11. Firefox浏览器个人用的插件
  12. python读取uci数据集
  13. 桥接模式与Nat模式的区别
  14. 铁路 信号组调工 技师 练习题 01
  15. 2020年数二真题(重点题讲解)
  16. 前端接入facebook jsSDK,实现登录授权功能
  17. 1080p60Hz需要传多少数据,怎么计算显示器带宽(一)【华光昱能知识与您分享】
  18. 架设FTP Server
  19. 逾期怎么处理_信用卡逾期怎么和银行协商_信用卡逾期协商处理方法
  20. python——经纬度坐标和平面投影坐标的相互转换

热门文章

  1. 基于javaSwing+文本存储的学生信息管理系统设计实现
  2. java定义一个方法,返回a的b次方
  3. 如何用计算机装手机系统,如何用手机usb重装电脑系统
  4. java写一个类吧,能不能自己写个java自带的类
  5. 如何查看keepalived版本号_Keepalived介绍 , 配置说明 , 及实际应用
  6. 基础线性规划实现---python
  7. php cli 编程,php-cli下编程如何分层架构、面向对象、统一入口文件?
  8. layui向body添加html_layui 各项配置
  9. 台式计算机的硬件组成部分,台式电脑主机的硬件组成部分简介
  10. 迭代器 java_百战程序员:Java设计模式之迭代器模式