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"/>

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

总结

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

相关文章

  • java注解的全面分析

    java注解的全面分析

    这篇文章主要介绍了java注解的全面分析的相关资料,Java提供的一种原程序中的元素关联任何信息和任何元数据的途径和方法,需要的朋友可以参考下
    2017-08-08
  • SpringWebMVC的常用注解及应用分层架构详解

    SpringWebMVC的常用注解及应用分层架构详解

    这篇文章主要介绍了SpringWebMVC的常用注解及应用分层架构,SpringWebMVC是基于ServletAPI构建的原始Web框架,从⼀开始就包含在Spring框架中,感兴趣的朋友可以参考下
    2024-05-05
  • java Spring MVC4环境搭建实例详解(步骤)

    java Spring MVC4环境搭建实例详解(步骤)

    spring WEB MVC框架提供了一个MVC(model-view-controller)模型-视图-控制器的结构和组件,利用它可以开发更灵活、松耦合的web应用。MVC模式使得整个服务应用的各部分(控制逻辑、业务逻辑、UI界面展示)分离开来,使它们之间的耦合性更低
    2017-08-08
  • Java读取项目json文件并转为JSON对象的操作

    Java读取项目json文件并转为JSON对象的操作

    这篇文章主要介绍了Java读取项目json文件并转为JSON对象的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 使Java的JButton文字隐藏功能的实现(不隐藏按钮的前提)

    使Java的JButton文字隐藏功能的实现(不隐藏按钮的前提)

    这篇文章主要介绍了使Java的JButton文字隐藏功能的实现(不隐藏按钮的前提),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 关于Java8新特性Optional类的详细解读

    关于Java8新特性Optional类的详细解读

    Optional类是一个容器类,它可以保存类型T的值,代表这个值存在。或者仅仅保存null,表示这个值不存在,原来用 null 表示一个值不存在,现在Optional 可以更好的表达这个概念。并且可以避免空指针异常,需要的朋友可以参考下
    2023-05-05
  • spring启动加载程序的几种方法介绍

    spring启动加载程序的几种方法介绍

    本篇文章主要介绍了spring启动加载程序的几种方法介绍,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 详解使用Spring Security进行自动登录验证

    详解使用Spring Security进行自动登录验证

    本篇文章主要介绍了详解使用Spring Security进行自动登录验证,非常具有实用价值,需要的朋友可以参考下
    2017-09-09
  • 如何使用ByteArrayOutputStream下载文件

    如何使用ByteArrayOutputStream下载文件

    这篇文章主要介绍了如何使用ByteArrayOutputStream下载文件方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • java实现百度坐标的摩卡托坐标与火星坐标转换的示例

    java实现百度坐标的摩卡托坐标与火星坐标转换的示例

    这篇文章主要介绍了java实现百度坐标的摩卡托坐标与火星坐标转换的示例,需要的朋友可以参考下
    2014-03-03

最新评论