聊聊logback的ThresholdFilter

本文主要研究一下logback的ThresholdFilter

ThresholdFilter

ch/qos/logback/classic/filter/ThresholdFilter.java

public class ThresholdFilter extends Filter<ILoggingEvent> {Level level;@Overridepublic FilterReply decide(ILoggingEvent event) {if (!isStarted()) {return FilterReply.NEUTRAL;}if (event.getLevel().isGreaterOrEqual(level)) {return FilterReply.NEUTRAL;} else {return FilterReply.DENY;}}public void setLevel(String level) {this.level = Level.toLevel(level);}public void start() {if (this.level != null) {super.start();}}
}

ThresholdFilter继承了Filter,其decide方法从ILoggingEvent获取level,若该level大于等于指定的level则返回NEUTRAL,否则返回DENY

isGreaterOrEqual

ch/qos/logback/classic/Level.java

public final class Level implements java.io.Serializable {private static final long serialVersionUID = -814092767334282137L;public static final int OFF_INT = Integer.MAX_VALUE;public static final int ERROR_INT = 40000;public static final int WARN_INT = 30000;public static final int INFO_INT = 20000;public static final int DEBUG_INT = 10000;public static final int TRACE_INT = 5000;public static final int ALL_INT = Integer.MIN_VALUE;/*** The <code>OFF</code> is used to turn off logging.*/public static final Level OFF = new Level(OFF_INT, "OFF");/*** The <code>ERROR</code> level designates error events which may or not be* fatal to the application.*/public static final Level ERROR = new Level(ERROR_INT, "ERROR");/*** The <code>WARN</code> level designates potentially harmful situations.*/public static final Level WARN = new Level(WARN_INT, "WARN");/*** The <code>INFO</code> level designates informational messages highlighting* overall progress of the application.*/public static final Level INFO = new Level(INFO_INT, "INFO");/*** The <code>DEBUG</code> level designates informational events of lower* importance.*/public static final Level DEBUG = new Level(DEBUG_INT, "DEBUG");/*** The <code>TRACE</code> level designates informational events of very low* importance.*/public static final Level TRACE = new Level(TRACE_INT, "TRACE");/*** The <code>ALL</code> is used to turn on all logging.*/public static final Level ALL = new Level(ALL_INT, "ALL");public final int levelInt;public final String levelStr;/*** Instantiate a Level object.*/private Level(int levelInt, String levelStr) {this.levelInt = levelInt;this.levelStr = levelStr;}/*** Returns <code>true</code> if this Level has a higher or equal Level than the* Level passed as argument, <code>false</code> otherwise.*/public boolean isGreaterOrEqual(Level r) {return levelInt >= r.levelInt;}//......
}    

Level定义了OFF(Integer.MAX_VALUE)、ERROR(40000)、WARN(30000)、INFO(20000)、DEBUG(10000)、TRACE(5000)、ALL(Integer.MIN_VALUE)这几个level,其int值依次减小。isGreaterOrEqual方法则是根据levelInt值来判断。

示例

	<appender name="FILE_INFO"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>infoLog.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>infoLogs.%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>30</maxHistory><totalSizeCap>3GB</totalSizeCap></rollingPolicy><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter><encoder><pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern></encoder></appender>

这里对FILE_INFO添加了ThresholdFilter,只有级别大于等于INFO的才打印

小结

logback的ThresholdFilter继承了Filter,其decide方法从ILoggingEvent获取level,若该level大于等于指定的level则返回NEUTRAL,否则返回DENY。Level定义了OFF(Integer.MAX_VALUE)、ERROR(40000)、WARN(30000)、INFO(20000)、DEBUG(10000)、TRACE(5000)、ALL(Integer.MIN_VALUE)这几个level,其int值依次减小。isGreaterOrEqual方法则是根据levelInt值来判断。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/159664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html a标签资源下载

主要用作关卡编辑器生成配置下载&#xff0c;其中存储路径为浏览器默认下载路径 code /*** fileDownload* param content 文件内容&#xff0c;-str* param fileName 文件名&#xff0c;-file/level1.json*/downloadByBlob(content: string, fileName: string){document.creat…

C++ 修饰符、存储类、运算符、循环、判断

一、C修饰符类型&#xff1a; C允许在char、int、double数据类型前放置修饰符。 数据类型修饰符&#xff1a; ◆ signed&#xff1a;表示变量可以存储负数。对于整型变量来说&#xff0c;signed 可以省略&#xff0c;因为整型变量默认为有符号类型。 ◆ unsigned&#xff1…

metersphere 创建场景, 自动动态变换参数值,实现接口自动化测试。

创建场景 创建产品变量 添加数值 添加后点击确定 点击右下角 号 点击 循环控制器 写循环 创建/导入接口 选择运行环境&#xff0c; 没有的话新建一个 需要点击引用环境 保存后点击 调试 成功做到每次请求的参数是列表里的 10

怎么提高拍摄视频画质和清晰度?这几个方法一定要学会

一、提高拍摄视频画质和清晰度 1、分辨率 分辨率就是我们常说的480P、720P、1080P、4K等等&#xff0c;分辨率越大&#xff0c;在某种程度上视频也就越清晰。虽然原理是这样的&#xff0c;但在不同平台上传视频也会影响最终的画质。 比如超高分辨率的视频不适合在某音。因为…

BUUCTF [BJDCTF2020]纳尼 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。来源&#xff1a;https://github.com/BjdsecCA/BJDCTF2020 密文&#xff1a; 下载附件&#xff0c;解压得到6.gif和题目.txt文件。 解题思路&#xff1a; 1、查看题目.txt文件&a…

形态学操作—开运算

开运算&#xff08;Opening&#xff09;原理和作用&#xff1a; 开运算是图像形态学处理中的一种操作&#xff0c;它由两个步骤组成&#xff1a;先进行腐蚀&#xff08;Erosion&#xff09;&#xff0c;再进行膨胀&#xff08;Dilation&#xff09;。开运算的主要目的是消除图像…

2

【任务 2】私有云服务运维[10 分] 【适用平台】私有云 【题目 1】OpenStack 开放镜像权限[0.5 分] 使 用 OpenStack 私 有 云 平 台 &#xff0c; 在 OpenStack 平台的 admin 项 目 中 使 用 cirros-0.3.4-x86_64-disk.img 镜像文件创建名为 glance-cirros 的镜像&#xff0c;通…

网络知识学习(笔记二)

ios模型规定的网络模型一共有7层&#xff0c;但是实际使用过程中&#xff0c;4层的TCP/IP模型是经常使用的&#xff0c;网络知识学习笔记里面也是基于4层TCP/IP模型进行分析的&#xff0c;前面已经讲了&#xff1a;&#xff08;1&#xff09;物理层&#xff0c;&#xff08;2&a…

VMware 系列:戴尔服务器配置(格式数据、RAID5、安装ESXI)以及相关问题

戴尔服务器配置(格式数据、RAID5、安装ESXI)以及相关问题 一. 戴尔服务器配置(格式数据、RAID5、安装ESXI)一、戴尔服务器数据格式化1.进入服务器bios界面2.启动虚拟控制台后按F2键进入系统设置界面3.进入设置界面,然后选择Device Settings4.然后进入如下界面,选择Integr…

Linux系统管理与服务器安全:构建稳健云数据中心

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在当今数字化时代&#xff0c;云数据中心已经成…

FeignClient相关调用逻辑

https://www.cnblogs.com/chiangchou/p/feign.html#_label3_2

最受欢迎的猫罐头有那些?精选的5款热门猫罐头推荐!

新手养猫很容易陷入疯狂购买的模式&#xff0c;但有些品牌真的不能乱买&#xff01;现在的大环境不太好&#xff0c;我们需要学会控制自己的消费欲望&#xff0c;把钱花在刀刃上&#xff01;现在宠物市场真的很内卷&#xff0c;很多品牌都在比拼产品的数据和营养成分。很多铲屎…

物联网AI MicroPython学习之语法 WDT看门狗外设

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; WDT 介绍 模块功能: 看门狗WDT&#xff08;WatchDog Timer&#xff09;外设驱动模块 接口说明 WDT - 构建WDT对象 函数原型&#xff1a;WDT(timeout)参数说明&#xff1a; 参数类型必选参数&#xff1f…

springboot内置Tomcat流程

1、org.springframework.boot.SpringApplication#initialize setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));加载了org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext 2、spring refres…

12-25v转3.3v高清水下钓鱼摄像头电源供电芯片方案

高清水下钓鱼摄像头电源芯片方案&#xff1a;12-25V转3.3V&#xff0c;支持超宽电压输入范围和30米长线视频放大 在水下钓鱼摄像头设计中&#xff0c;为了实现高清画质和稳定的电源供应&#xff0c;需要一款能够将12-25V转换为3.3V输出的高效电源芯片。这款电源芯片不仅支持高…

Java使用x-www-form-urlencoded发请求

平常在开发过程中用的最多的就是JSON格式&#xff0c;请求编码就是 application/json&#xff0c;但偏偏有些接口是 x-www-form-urlencoded&#xff0c;怎么办呢&#xff0c;重新封装喽 在POSTMan工具是叫 x-www-form-urlencoded 在 APIpost工具中是叫 urlencoded Map<Str…

数据结构-map

数据结构-哈希算法 哈希原理 hash哈希是一种算法 y hash(x) 给定一个x一定得到固定的yx是输入&#xff0c;x取值范围称为输入空间&#xff0c;x是任意值&#xff0c;x是任意长度&#xff08;go中字节序列&#xff09;y是输出&#xff0c;y取值范围称为输出空间&#xff0c;…

Spring Boot 邮件发送(五种类型的邮件)

邮件协议&#xff1a; SMTP、POP3、IMAP SMTP 协议全称为 Simple Mail Transfer Protocol&#xff0c;译作简单邮件传输协议&#xff0c;它定义了邮件客户端软件与 SMTP 服务器之间&#xff0c;以及 SMTP 服务器与 SMTP 服务器之间的通信规则。 用户先将邮件投递到腾讯的 SMT…

C#每天复习一个重要小知识day3:随机数的生成

目录 格式&#xff1a; 生成随机数&#xff1a; 生成一个0-100的随机数&#xff1a; 以下是更详细的代码示例&#xff1a; 在C#中&#xff0c;可以使用Random类来生成随机数。这个类提供了多种方法来生成不同类型的随机数。 格式&#xff1a; Random 随机变量名(r) new …

论文阅读 Forecasting at Scale (一)

最近在看时间序列的文章&#xff0c;回顾下经典 论文地址 项目地址 Forecasting at Scale 摘要1、介绍2、时间业务序列的特点3、Prophet预测模型3.1、趋势模型3.1.1、非线性饱和增长3.1.2、具有变化点的线性趋势3.1.3、自动转换点选择3.1.4、趋势预测的不确定性 摘要 预测是一…