当前位置: 首页 > news >正文

log4j控制台不打印日志的故障解决方案

前言

接管了别的项目组的一个代码,在IDAE调试程序的过程中,发现log4j日志居然没有打印在控制台上,日志相关代码也没有问题。

在网上搜索了一圈,总结了一下个人解决这个问题的流程。

流程

1. 判断用了什么配置文件

不知道是出于什么目的,项目中居然有log4j的properties和xml两个配置文件。

刚开始我都没有看到xml文件,一直在关注properties文件,发现也没啥问题。后来在Vm options添加了**-Dlog4j.debug**,在启动时打印log4j的信息中发现,log4j用的是xml文件。

2. additivity

其次就是<logger>的additivity属性。

<!-- 打印到控制台 -->
<appender name="myConsole" class="org.apache.log4j.ConsoleAppender"><param name="Target" value="System.out" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern"  value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n" /></layout>
</appender><!-- 打印到文件中 -->
<appender name="fileAppender" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="${logfileName}.log" /><param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern"value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n" /></layout>
</appender><!-- logger -->
<logger name="com.test" additivity="false"><level value="INFO" /><appender-ref ref="fileAppender" />
</logger><!-- root -->
<root><priority value ="INFO"/><appender-ref ref="myConsole"/>
</root>

在xml配置文件中,<appender>定义了日志以什么样的格式输出到控制台或者文件中。<logger>决定项目中的每个class绑定哪个appender。<root>是根logger,会绑定多个appender。

logger的additivity默认为true,表示此logger要打印的日志也要传给root一份,让root的appender进行打印。

3. 解决方案

方案一

修改additivity为true,或者直接去掉,因为默认值就是true

方案二

在com.test的logger里面将console的appender添加进去。

<!-- logger -->
<logger name="com.test" additivity="false"><level value="INFO" /><appender-ref ref="fileAppender" /><appender-ref ref="myConsole" />
</logger>

这样,就解决了在控制台不打印日志的问题了。


95后小程序员,写的都是日常工作中的亲身实践,置身于初学者的角度从0写到1,详细且认真。文章会在公众号 [入门到放弃之路] 首发,期待你的关注。

感谢每一次遇见

http://www.lryc.cn/news/26381.html

相关文章:

  • C# 序列化时“检测到循环引用”错误的彻底解决方案
  • 小红书“复刻”微信,微信“内造”小红书
  • 用arthas轻松排查线上问题
  • mysql一explain结果分析
  • 原理底层计划--HashMap
  • win10 设备管理器中的黄色感叹号(华硕)
  • 新产品上市推广不是“铺货”上架
  • MATLAB训练神经网络小结
  • 实战:一天开发一款内置游戏直播的国产版Discord应用【附源码】
  • 嵌入式学习笔记——基于Cortex-M的单片机介绍
  • Python 虚拟环境的使用
  • 招生咨询|浙江大学MPA项目2023年招生问答与通知
  • Qt std :: bad_alloc
  • 《设计模式》装饰者模式
  • 一文说清Kubernetes的本质
  • 信息发布小程序【源码好优多】
  • 创新型中小企业申报流程
  • 【UE4 Cesium】加载离线地图
  • Spring面试题
  • 动态网站开发讲课笔记03:HTTP协议
  • 2023年天津财经大学珠江学院专升本专业课考试题型
  • 五方面提高销售流程管理的CRM系统
  • AutoCAD通过handle id选择实体
  • 页面状态码的含义
  • Redis 越来越慢?常见延迟问题定位与分析
  • 【python】python-socketio+firecamp使用踩坑指南
  • 【OJ比赛日历】快周末了,不来一场比赛吗? #03.04-03.10 #12场
  • C++11:继承
  • 【蓝桥杯试题】递归实现排列型枚举
  • 入职字节测试岗外包一个月,我离职了...