log4j2 日志打两遍的问题

在使用log4j2的时候,一般都需要不同的日志分类打印不同的日志等级,如下面的配置

<!-- 用于指定log4j自动重新配置的监测间隔时间,单位是秒 -->
<configuration debug="off" monitorInterval="10"><Properties><Property name="log-path">server_logs</Property></Properties><Appenders><Console name="console" target="SYSTEM_OUT"><PatternLayoutpattern="%d{yyyy-MM-dd HH:mm:ss} %t-%T %-5level %class{36} - %msg%xEx%n" /></Console></Appenders><Loggers><logger name = "com.mygame" level="debug"><appender-ref ref="console" /></logger><root level="error"><appender-ref ref="console" /></root></Loggers>
</configuration>

这个配置的目标是,没有指定logger的时候,日志输出使用root,而root的级别是error,希望com.mygame包下面的日志输出debug级别。但是这样运行之后,发现日志输出了两遍,我是在从消息队列中接收消息之后打印的日志,害得我以为一个消息被处理了两次。

这种情况是log4j2的机制问题,在Log4j2中,logger是有继承关系的,root是根节点,而上面配置中添加的logger就是root的子节点,在log4j2中,有个additivity的属性,它是子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。由于上面的配置com.mygame的logger和root都输出到console中了,所以会显示输出了两条日志。

要打破这种传递性,也非常简单,在logger中添加 additivity = “false”,如下所示:

<Loggers><logger name = "com.mygame" level="debug" additivity = "false"><appender-ref ref="console" /></logger><root level="error"><appender-ref ref="console" /></root></Loggers>

生日礼物女孩子送女友男朋友护士创意实用的520小惊喜母亲情人节

log4j2 日志打两遍的问题相关推荐

  1. python log日志打印两遍_python打印log重复问题

    浅析python日志重复输出问题 问题起源: ​ 在学习了python的函数式编程后,又接触到了logging这样一个强大的日志模块.为了减少重复代码,应该不少同学和我一样便迫不及待的写了一个自己的日 ...

  2. log4j2日志配置

    背景 log4j2相对于log4j 1.x有了脱胎换骨的变化,其官网宣称的优势有多线程下10几倍于log4j 1.x和logback的高吞吐量.可配置的审计型日志.基于插件架构的各种灵活配置等. 官方 ...

  3. 一起进阶一起拿高工资!Java开发进阶-log4j2日志脱敏原理分析

    本文首发于公众号[看点代码再上班],欢迎关注,第一时间获取最新文章. 大家好,我是tin,这是我的第5篇原创文章 本文讲述在考虑对业务系统代码入侵最小的情况下实现日志脱敏的方案原理.文章很长,包括了日 ...

  4. log4j2 pattern 行号_Springboot整合log4j2日志全解总结

    在项目推进中,如果说第一件事是搭Spring框架的话,那么第二件事情就是在Sring基础上搭建日志框架,我想很多人都知道日志对于一个项目的重要性,尤其是线上Web项目,因为日志可能是我们了解应用如何执 ...

  5. java如何读取自定义log4j2_spring boot自定义log4j2日志文件的实例讲解

    背景:因为从 spring boot 1.4开始的版本就要用log4j2了,支持的格式有json和xml两种格式,此次实践主要使用的是xml的格式定义日志说明. spring boot 1.5.8.R ...

  6. Spring Boot Log4j2 日志学习

    简介 Java 中比较常用的日志工具类,有: Log4j. SLF4j. Commons-logging(简称jcl). Logback. Log4j2(Log4j 升级版). Jdk Logging ...

  7. Log4j2日志框架集成Slf4j日志门面

    1.说明 本文介绍使用日志门面Slf4j打印日志, 底层日志实现使用Log4j2框架, 方便以后切换底层日志实现, Log4j2可以替换成Logback等. 2.依赖管理 在pom.xml依赖管理中导 ...

  8. Springboot整合log4j2日志全解

    作者:上帝爱吃苹果 cnblogs.com/keeya/p/10101547.html 在项目推进中,如果说第一件事是搭Spring框架的话,那么第二件事情就是在Sring基础上搭建日志框架,我想很多 ...

  9. logback日志pattern_Springboot整合log4j2日志全解

    点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:上帝爱吃苹果 cnblogs.com/keeya/p/10101547.html 在 ...

最新文章

  1. UVA1660 电视网络 Cable TV Network(网络流,最小割)
  2. 二叉树遍历算法的六种c语言实现 递归与非递归
  3. 读取.bin激光雷达点云文件格式并可视化
  4. mysql 5.7 引擎_MySQL 5.7 学习:功能性能的提升
  5. MySQL运维系列 之 如何监控大事务
  6. LeetCode 1457. 二叉树中的伪回文路径(位运算+递归)
  7. js字符串的字典序_27. 字符串的排列
  8. 第十三篇:multimap容器和multiset容器中的find操作
  9. 针对服务器操作系统安全,浅谈等级保护中的服务器操作系统安全
  10. 计算机编程常用指令,加工中心几个常用指令的编程技巧
  11. 操作系统中死锁的概念
  12. 吴恩达机器学习5——神经网络的学习
  13. java遍历文件夹并复制文件到指定目录
  14. ModBus通信协议的【Modbus RTU 协议使用汇总】
  15. matlab如何表示冲激信号,matlab里如何表示冲激信号
  16. 彗星mysql_【What if 系列】彗星与棒球
  17. PT100(RTD)三线制四线制测量方案
  18. 咸鱼菌玩3D—投影基础
  19. Java实战项目之 [含文档+PPT+源码等]精品基于ssm的足球联赛管理系统的设计与实现
  20. 一个食品专业本科生的自白:能不吃最好别吃

热门文章

  1. 从《网管员必读》系列丛书获奖看读者的真正需求——成绩回顾
  2. Oracle数据字典视图之DICT_COLUMNS(提纲掣领的一篇,该视图是一个工具对深入了解数据字典)
  3. 笔记本linux系统改win7系统教程,联想笔记本电脑自带win8或linux改装win7详细教程...
  4. 无法安装32位版本的Office,因为在您的PC上找到了以下64位程序
  5. 1.工厂模式获取服务实例
  6. jasper iReport 插入图片问题
  7. 我的java自学经历,土木转行java的
  8. 如何使用百度API提交收录?
  9. 「龙书」作者Alfred Aho 和 Jeffrey Ullman 获图灵奖
  10. 大公司与小公司之间,为何要选择大公司?