记一次Log4j2日志无法输出的 心酸史
问题描述:部分日志无法输出到日志文件中。
项目中的代码:
@Resource private ConfigInfo configInfo; private static final Logger logger = Logger.getLogger(UdmpUtil.class); @PostConstruct public void initialize() { try {
logger.info("log write...."); UdmpConfig.init(configInfo.getUdmp_path()); } catch (IOException e) { logger.info("init failed @UdmpUtil_Exception", e); } }
以上代码段是可以输出到日志文件中的。
分析:
带有 @PostConstruct 标签的代码块中的logger.info 方法是可以输出日志 并写入到日志文件中。但是其他业务层的logger.info方法却不能。证明日志的xml文件应该是没有问题的
解决:
通过源码分析后发现加载的日志配置文件不是项目中的日志配置文件,项目中的一个jar在启动的时候自己加载了其默认的log.xml文件,导致项目中的log.xml文件无法加载。
在引入的jar文件中配置了其log4j.xml的位置指向该项目中的日志文件。之后日志可以正常输出
总结:
一个项目一定要配置好日志文件的位置,保证其唯一性不被其他框架或工具类默认的日志文件覆盖。
不积跬步无以至千里