log4j2 xml配置文件屏蔽第三方依赖包的日志方式

 更新时间:2024年04月29日 09:13:15   作者:苦荞米  
这篇文章主要介绍了log4j2 xml配置文件屏蔽第三方依赖包的日志方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

第三方日志

代码如下,这个是一个最简单的,只打印日志到控制台的配置,这里将用这个代码来作为例子来解释如何屏蔽掉第三方日志。

<?xml version="1.0" encoding="UTF-8" ?>

<Configuration status="WARN" monitorInterval="600">
    <Appenders>
        <Console name="console_out_appender" target="SYSTEM_OUT">
            <!-- 输出日志的格式 -->
            <PatternLayout pattern="%5p [%t] %d{yyyy-MM-dd HH:mm:ss} (%F:%L) %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <!-- 配置日志的根节点,打印trace等级及其以上等级的日志 -->
        <root level="trace">
            <appender-ref ref="console_out_appender"/>
        </root>
    </Loggers>
</Configuration>

在用这个配置文件的时候,就会发现有大量的第三方日志充斥其中,导致像查找自己的日志非常的困难,效果如下所示

这个是第三方日志中的zookeeper的心跳机制日志,几乎一秒钟输出一行,特别烦人

DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:30 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 48ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:31 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 9ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:32 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 4ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:34 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 7ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:35 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 6ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:36 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 24ms
DEBUG [RMI TCP Connection(192.168.9.5:2181)] 2021-07-21 10:46:38 (ClientCnxn.java:717) Got ping response for sessionid: 0x17a18cc4d2b4155 after 11ms

专门屏蔽某一个第三方日志

要想屏蔽这个日志,一个是直接提升日志的根节点的日志等级到info,这样就看不到这些日志了,但是这样也会掩盖主自己的info已下的等级的日志。

但可以通过添加<logger>标签来专门屏蔽第三方日志,代码如下所示。

<?xml version="1.0" encoding="UTF-8" ?>

<Configuration status="WARN" monitorInterval="600">
    <Appenders>
        <Console name="console_out_appender" target="SYSTEM_OUT">
            <!-- 输出日志的格式 -->
            <PatternLayout pattern="%5p [%t] %d{yyyy-MM-dd HH:mm:ss} (%F:%L) %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <!-- 配置日志的根节点 -->
        <root level="trace">
            <appender-ref ref="console_out_appender"/>
        </root>
        <!-- 第三方日志系统 -->
        <logger name="org.apache.zookeeper" level="info"/>
    </Loggers>
</Configuration>

这样就可以通过info的等级来专门限制zookeeper的心跳机制日志了,同时不影响自己的日志等级。

但是乱输出日志的东西还有很多,其中就包括spring框架,然后就可以通过添加logger的方式来屏蔽日志

批量屏蔽第三方日志

为了屏蔽第三方日志,不得不加了很多logger,而且还屏蔽不全,最主要的原因是不知道要屏蔽的logger的name属性,只能从网上搜,结果如下,依然屏蔽不全。

<!-- 第三方日志系统 -->
<logger name="org.springframework.core" level="info"/>
<logger name="org.springframework.beans" level="info"/>
<logger name="org.springframework.context" level="info"/>
<logger name="org.springframework.web" level="info"/>
<logger name="org.jboss.netty" level="info"/>
<logger name="org.apache.http" level="info"/>
<logger name="org.apache.zookeeper" level="info"/>
<logger name="org.apache.maven.plugins" level="info"/>

怎么批量设置第三方日志,我试了用通配符'*',但是不管用,网上搜了半天,发现对logger节点下name属性的描述只有一句话:name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点。

可能是我阅读理解不行,看不懂。

最后查了https://stackoverflow.com/questions/44551571/log4j2-wildcard-logger-nameshttps://logging.apache.org/log4j/2.x/manual/api.html#Logger_Names,才明白,只要屏蔽掉了父级日志,就会自动屏蔽子一级日志。

所以上面写这么多东西都屏蔽不全的,改成下面一句话就可以了。

<!-- 第三方日志系统 -->
<logger name="org" level="info"/>

天哪,网上搜了好多人的答案,都是傻乎乎的一个一个的配置,看着真是让人太绝望了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MyBatis 实现多对多中间表插入数据

    MyBatis 实现多对多中间表插入数据

    这篇文章主要介绍了MyBatis 实现多对多中间表插入数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java实现自定义语言和表达式解析的解释器模式

    Java实现自定义语言和表达式解析的解释器模式

    Java解释器设计模式通过解析自定义语言和表达式,实现对复杂逻辑的处理,提高程序可扩展性和灵活性。它将语法解析和执行过程分离,通过抽象语法树和解释器实现对语言和表达式的解析和求值,避免了硬编码和复杂的条件判断,提高了程序的可读性和可维护性
    2023-04-04
  • JAVA中使用FileWriter写数据到文本文件步骤详解

    JAVA中使用FileWriter写数据到文本文件步骤详解

    这篇文章主要介绍了JAVA中使用FileWriter写数据到文本文件步骤详解,FileWriter类提供了多种写入字符的方法,包括写入单个字符、写入字符数组和写入字符串等,它还提供了一些其他的方法,如刷新缓冲区、关闭文件等,需要的朋友可以参考下
    2023-10-10
  • 基于Springboot2.3访问本地路径下静态资源的方法(解决报错:Not allowed to load local resource)

    基于Springboot2.3访问本地路径下静态资源的方法(解决报错:Not allowed to load local

    这篇文章主要介绍了基于Springboot2.3访问本地路径下静态资源的方法(解决报错:Not allowed to load local resource),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • java部署项目流程几种常见方式详解

    java部署项目流程几种常见方式详解

    部署Java项目通常有几种常见的方法,具体选择哪种方法取决于项目需求、资源、团队习惯等因素,这篇文章主要介绍了java部署项目流程几种常见方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-06-06
  • pagehelper插件显示total为-1或1的问题

    pagehelper插件显示total为-1或1的问题

    这篇文章主要介绍了pagehelper插件显示total为-1或1,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java中实现Map按值排序的多种方法

    Java中实现Map按值排序的多种方法

    Java的Map接口默认不保证元素的顺序,本文介绍如何使用TreeMap、Collections.sort()结合Entry、Stream API以及Guava库等技术手段实现Map按值排序,每种方法都有其特点,在选择具体方法时应考虑项目的具体需求及个人偏好,需要的朋友可以参考下
    2025-03-03
  • Java 压缩包解压实现代码

    Java 压缩包解压实现代码

    Java标准库(Java SE)提供了对ZIP格式的原生支持,通过java.util.zip包中的类来实现压缩和解压功能,本文将重点介绍如何使用Java来解压ZIP或RAR压缩包,感兴趣的朋友一起看看吧
    2025-05-05
  • Java异常体系非正常停止和分类

    Java异常体系非正常停止和分类

    这篇文章主要介绍了Java异常体系非正常停止和分类,指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止更多相关内容需要的朋友可以参考一下
    2022-06-06
  • MyBatis-Plus逆向工程——Generator的使用

    MyBatis-Plus逆向工程——Generator的使用

    这篇文章主要介绍了MyBatis-Plus逆向工程——Generator的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论