改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 environment
          URL 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,并设置级别 ERROR
          addDefaultFilter(context);
          configurator.doConfigure(url);
      } catch (JoranException je) {
          // StatusPrinter will handle this
          LogUtil.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 还是有必要的 。建议能不改尽量不改。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烤鸭的世界我们不懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值