记一次Log4j2日志无法输出的 心酸史

Posted a java coder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次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的位置指向该项目中的日志文件。之后日志可以正常输出

总结:

  一个项目一定要配置好日志文件的位置,保证其唯一性不被其他框架或工具类默认的日志文件覆盖。

以上是关于记一次Log4j2日志无法输出的 心酸史的主要内容,如果未能解决你的问题,请参考以下文章

记一次项目上线后Log4j2不输出日志的坑

记一次log4j2引发的渗透测试

从FFmpeg输出日志中分析问题原因——记一次输出流顺序异常

从FFmpeg输出日志中分析问题原因——记一次输出流顺序异常

从FFmpeg输出日志中分析问题原因——记一次输出流顺序异常

从FFmpeg输出日志中分析问题原因——记一次输出流顺序异常