记一次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的位置指向该项目中的日志文件。之后日志可以正常输出

总结:

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

时间: 2024-10-20 21:52:44

记一次Log4j2日志无法输出的 心酸史的相关文章

记一次log4j日志文件输出错误的解决

log4j错误信息:log4j:ERROR Failed to rename [D:/logs/wmts_] to [D:/logs/wmts_2015-12-21.log ]. 起因:部门网站使用B/S架构请求,请求过程中需要将日志文件记录下来,以便出现问题进行查找,刚开始服务器上的日志文件能够正常输出,后来日志文件不能输出,部门领导让我查找原因并修改. 介绍:本人JAVA小白一枚,之前是学.Net出身,来到公司之后由于公司需要才转的JAVA,日志输出做的比较少所以部门经理刚交给我的时候心里还

Spring Boot + Log4j2 日志框架配置 (Maven)

参考Spring Boot官方文档 日志部分 Spring Boot默认情况下,当使用"Starters" 使用Logback输出日志, 还包括适当的Logback路由, 确保其他的日志框架(Java Util Logging, Commons Logging, Log4j, SLF4J)都能正常使用 Sping Boot文档的 26.5 Custom Log Configuration 章节,说明了自定义日志配置方法 多样的日志系统可以通过 添加适当的日志框架库到classpath

java log日志的输出。

在Spring框架中添加日志功能: pom.xml 1<dependency> 2 <groupId>log4j</groupId> 3 <artifactId>log4j</artifactId> 4 <version>1.2.17</version> 5</dependency> web.xml 1 <!-- 启动log --> 2 <servlet> 3 <servlet-n

.NET Core下的日志(3):如何将日志消息输出到控制台上

当我们利用LoggerFactory创建一个Logger对象并利用它来实现日志记录,这个过程会产生一个日志消息,日志消息的流向取决于注册到LoggerFactory之上的LoggerProvider.说的更加具体一点,日志消息的归宿取决于注册到LoggerFactory的LoggerProvider究竟会提供怎样的Logger.微软提供了一系列原生的LoggerProvider,我们先来认识一下将控制台作为日志输出目的地的ConsoleLoggerProvider.ConsoleLoggerPr

java mybatis学习之$和#区别,mapper代理接口,动态SQL,在日志中输出mybatis的sql语句

1.在mybatis中,$和#的区别: #{}:表示一个预处理参数,参数类型不定,是根据传入的参数类型来设定的.类似于JDBC中的? 特例使用,模糊查询:(针对oracle): and username like concat(concat('%',#{username}),'%') ${}:相当于是我们的JDBC里的字符串拼接.这里就相当于传入的就是一个字符串(不管传入什么样的数据类型,都是字符串) and username like '%${value}%' 2.$和#在mybatis中的优

log4net--帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具

1. log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具. 2. Log4net的结构如下: log4net 有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器)以及Layout(布局). 3. 配置节点是由logger和appender组成的. logger说明要使用哪些appender. appender说明日志怎样存储,如写入系

pomelo配置logger时日志无法输出到日志文件的问题解决方案

在使用pomelo的过程中发现log4js的日志无法输出到日志文件,解决办法如下: 1.删除工程目录下 ./node_modules/pomelo/node_modules/pomelo-logger 文件夹 2.修改工程目录下 ./node_modules/pomelo/package.json 文件,找到dependencies中的pomelo-logger,并删除改行 同时还发现,pomelo-admin中的日志也是无法输出到日志文件,解决办法类似: 1.删除工程目录下 ./node_mo

浅析python日志重复输出问题

[TOC] 问题起源: ? 在学习了python的函数式编程后,又接触到了logging这样一个强大的日志模块.为了减少重复代码,应该不少同学和我一样便迫不及待的写了一个自己的日志函数,比如下面这样: # 这里为了便于理解,简单的展示了一个输出到屏幕的日志函数 def my_log(): logger = logging.getLogger('mysql.log') ch = logging.StreamHandler() ch.setLevel(logging.ERROR) fmt = log

springboot整合log4j2日志框架

springboot依赖中默认引入spring-boot-starter-logging,若要使用log4j2日志框架,则需要先将spring-boot-starter-logging排除. 方法: 在依赖关系图中找到spring-boot-starter-logging,单击右键选择exclude将其排除出去. pom文件中引入: <dependency> <groupId>org.springframework.boot</groupId> <artifact