改logback logstash-logback-encoder 框架本身的日志级别

大家好,我是烤鸭:

最近遇到一个问题,想把logback框架本身的日志级别修改,需要 logstash-logback-encoder 6.1 以上的版本才可以。

直接上代码

这里修改的不是业务日志级别,是 logback 框架本身(确切地说是 logstash-logback-encoder)这个包的日志级别,源码默认的是 WARN 级别,现在想改成只有ERROR的日志输出。

初始化加载类:

package com.xxx.reporter.flume;
​
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.core.joran.spi.JoranException;
import ch.qos.logback.core.status.OnConsoleStatusListener;
import ch.qos.logback.core.status.Status;
import ch.qos.logback.core.util.StatusPrinter;
import com.xxx.log.LogUtil;
import net.logstash.logback.status.LevelFilteringStatusListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
​
import java.net.URL;
​
/**
​* 自定义加载logback配置。*
​* @author 
​* @date 2020/7/23*/public class LogbackConfigLoader {
​private static final String LOGBACK_CONFIG = "logback.xml";
​/**
​* 重新加载logback 配置文件*/public static void load() {LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();try {// assume SLF4J is bound to logback in the current environmentURL url = LogbackConfigLoader.class.getClassLoader().getResource(LOGBACK_CONFIG);JoranConfigurator configurator = new JoranConfigurator();configurator.setContext(context);// Call context.reset() to clear any previous configuration, e.g. default// configuration. For multi-step configuration, omit calling context.reset().context.reset();// 初始化filter,并设置级别 ERRORaddDefaultFilter(context);configurator.doConfigure(url);} catch (JoranException je) {// StatusPrinter will handle thisLogUtil.log("LogbackConfigLoader error=" + je);}StatusPrinter.printIfErrorsOccured(context);
​}
​private static void addDefaultFilter(LoggerContext context) {context.getStatusManager().getCopyOfStatusListenerList();LevelFilteringStatusListener statusListener = new LevelFilteringStatusListener();statusListener.setLevelValue(Status.ERROR);statusListener.setDelegate(new OnConsoleStatusListener());statusListener.setContext(context);statusListener.start();context.getStatusManager().add(statusListener);}}

在项目启动的时候调一下这个方法就好了。

修改前以下的warn日志会打印,修改后就没了:

11:17:06,337 |-WARN in net.logstash.logback.appender.LogstashTcpSocketAppender[LOGSTASH] - Log destination xxx.com : 1234: Waiting 27476ms before attempting reconnection. 11:17:13,302 |-WARN in net.logstash.logback.appender.LogstashAccessTcpSocketAppender[logstash] - Log destination xxx.com : 1234: connection failed. java.net.ConnectException: Connection refused: connect at java.net.ConnectException: Connection refused: connect at at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) at at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) at at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) at at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) at at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) at at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) at at java.net.Socket.connect(Socket.java:606) at at net.logstash.logback.appender.AbstractLogstashTcpSocketAppender$TcpSendingEventHandler.openSocket(AbstractLogstashTcpSocketAppender.java:721) at at net.logstash.logback.appender.AbstractLogstashTcpSocketAppender$TcpSendingEventHandler.onStart(AbstractLogstashTcpSocketAppender.java:640) at at net.logstash.logback.appender.AsyncDisruptorAppender$EventClearingEventHandler.onStart(AsyncDisruptorAppender.java:351) at at com.xxx.arch.encoder.com.lmax.disruptor.BatchEventProcessor.notifyStart(BatchEventProcessor.java:224) at at com.xxx.arch.encoder.com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:120) at at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at at java.util.concurrent.FutureTask.run(FutureTask.java:266) at at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at at java.lang.Thread.run(Thread.java:748)

11:17:13,303 |-WARN in net.logstash.logback.appender.LogstashAccessTcpSocketAppender[logstash] - Log destination xxx.com : 1234: Waiting 27662ms before attempting reconnection.
 

根据自己的实际业务场景使用,有些 warn 还是有必要的 。建议能不改尽量不改。

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

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

相关文章

idea首次创建新模块的详细操作

依赖网址:https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/3.1.0 https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api/2.3.1 https://mvnrepository.com/artifact/org.springframework/spring-webmvc 创建文件夹 修改版本号 配…

[css] 怎么使用自定义字体?有什么注意事项?

[css] 怎么使用自定义字体?有什么注意事项? font-face { font-family: 自定义字体名称; src: url(字体文件名.eot); /* IE9 Compat Modes / src: url(字体文件名.eot?#iefix) format(embedded-opentype), / IE6-IE8 / url(字体文件名.woff) format(wof…

markdown 常用语法总结 - 个人版

这里并不是要总结所有的 markdown 语法,只是总结笔者自己撰写博客时常用的一些 markdown 语法。 1 图片设置 1.1 设置图片位置 利用markdown在编写文档时插入图片是默认靠左,有些时候将图片设置为居中时可以更加的美观,这时就需要在图片的信息…

[css] 要是position跟display、overflow、float这些特性相互叠加后会怎么样?

[css] 要是position跟display、overflow、float这些特性相互叠加后会怎么样? display:none之后别的样式设置成什么都不管用了,dom元素不可见了。position:absolute之后float应该就不起作用了个人简介 我是歌谣,欢迎和大家一起交流前后端知识…

logback AbstractLogstashTcpSocketAppender 源码解析

大家好,我是烤鸭: 今天分享下 logback 源码 ,版本是 6.5-SNAPSHOT。 写这篇的目的 由于最近项目中一直出现这个日志,而且基本每20秒就会打印一次,也没法关掉,百度上资料也很少,只能自己来了。 …

PostgreSQL 、springboot 、spring data jpa 集成

项目地址:https://gitee.com/zhxs_code/PostgreSQL_springboot_jpa_demo.git 增删查改都已经实现。 重点部分: 1.定义自己的方言。 1 package com.zxl.postgrespringdemo.config.dialect;2 3 import org.hibernate.dialect.PostgreSQL94Dialect;4 import…

[css] 有用过Flex吗?简要说下你对它的了解

[css] 有用过Flex吗?简要说下你对它的了解 给我感触最深的只有两点方便/好用子元素超出的bug关于bug, 大家有什么好的解决方案, 除了overflow: hidden个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大…

RedisTemplate value序列化导致的问题

大家好,我是烤鸭: ​ 今天分享一个redisTemplate 使用时,value 序列化的问题。 1. 问题描述 其实我最开始遇到的问题是: stringRedisTemplate.opsForSet().isMember(key,value)一直返回false问题,下边博客给出了…

41、OrthoMCL和mcl软件进行基因家族分析

转载:http://www.realbio.cn/news/124.html https://blog.csdn.net/seallama/article/details/43820763 http://www.cnblogs.com/huangying78/p/8638506.html 1. 数据库的配置 OrthoMCL的分析需要先行建立mysql账户并建立相应的数据库。关于mysql用户的创建我们不在…

[css] 如何实现换肤功能?

[css] 如何实现换肤功能? css 换肤常见方案 是通过 less/sass/postcss 等css 预处理器,通过它们自身的变量用法,设置不同变量,生成不同的主题样式,但是这些样式都是会被打包成常量,我们只能在编译之前修改…

beego——模板处理

beego的模板处理引擎采用的是Go内置的html/template包进行处理,而且beego的模板处理逻辑是采用了缓存编译方式, 也就是所有的模板会在beego应用启动的时候全部编译然后缓存在map里面。 1.模板目录 beego中默认的模板目录是views,用户可以把模…

日志 中文乱码、nacos 中文乱码、saltstack 中文乱码、docker中文乱码

大家好,我是烤鸭: ​ 今天分享一个 saltstack 中文乱码 的问题。 问题说明 由于项目之前没有接入公司的发布系统,今天接入之后发现日志乱码,不仅如此,从nacos获取到的中文参数也是乱码。于是猜想是发布系统遗留了一…

[css] 列举CSS优化、提高性能的方法

[css] 列举CSS优化、提高性能的方法 加载性能压缩CSS通过link方式加载,而不是import复合属性其实分开写,执行效率更高,因为CSS最终也还是要去解析如 margin-left: left;选择器性能尽量少的使用嵌套,可以采用BEM的方式来解决命名冲…

[css] 假如设计稿使用了非标准的字体,你该如何去实现它?

[css] 假如设计稿使用了非标准的字体,你该如何去实现它? 协商解决, 如果是重要信息, 如logo等, 使用图片, iconfont.个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 …

redis出现过多command 慢查询slowlog出现command命令

大家好,我是烤鸭: 今天分享一个问题,一个关于redis slowlog,执行过多 command命令的问题。 问题来源 所有走redis 的接口tp99和平均耗时是原来的两倍不止,运维说redis 的qps也翻倍了。查了下slowlog,发现…

[学习笔记]上下界网络流

有的时候,网络流建模要考虑某些边必须选择若干次,又不能多于若干次,而且不太容易转化成比较好的限制模型, 就简单粗暴地给每条边定一个流量的上下界,求在满足上下界的基础上的一些问题。 大概有以下几种。 基本思路都是…

[css] 你知道全屏滚动的原理是什么吗?它用到了CSS的哪些属性?

[css] 你知道全屏滚动的原理是什么吗?它用到了CSS的哪些属性? 全屏滚动和轮播图类似,都是通过改变元素位置或者显示与隐藏来实现,配合JS的一些交互距离判断,实现类似原生滚动捕获的效果。这里全屏的话就需要将宽高都设…

springcloud gateway 使用nacos 动态过滤器 记一次线上网关升级cpu升高的问题

大家好,我是烤鸭: ​ 网关升级,想使用 springcloud gateway nacos 动态过滤器配置(原来是硬编码的方式),升级之后出了一些问题(cpu升高,ygc频繁),记录一下。 关于 springcloud gateway 集成 nacos 可以看…

[css] 你是怎样抽离样式模块的?

[css] 你是怎样抽离样式模块的? 说的是 webpack extract-text-webpack-plugin插件吧? 把样式文件单独打包出来。 webpack4 升级了插件为 mini-css-extract-plugin个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,…

【1】生产者-消费者模型的三种实现方式

(手写生产者消费者模型,写BlockingQueue较简便 ) 1、背景 生产者生产数据到缓冲区中,消费者从缓冲区中取数据。 如果缓冲区已经满了,则生产者线程阻塞; 如果…