记录一次在SpringBoot项目中使用log42.yml作为配置文件遇到的问题
首先在SpringBoot中集成log4j2
还是比较容易的,只需要在maven的pom文件中修改一下logging的依赖然后在resources
中添加log4j2
相关的配置文件就可以了。
我当时使用的是log4j2.yml
格式的配置文件,所以就在maven
的pom.xml
文件中做了如下的修改:
|
|
这个在我当时的项目中是正确运行的。
我后来又创建了一个新的项目,也想用log4j2
,就直接复制了上一个项目中配置了,但是在运行的时候发现怎么也加载不了log4j2
的配置文件,总是提示ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided ...
,但是log4j2
的配置文件的确是存在的。
在这样的情况下,日志是无论如何都不会打印出来的,没办法只能加上log4j2.debug
属性进行调试,在控制台的日志中我发现了这样一条日志WARN StatusLogger Found configuration file log4j2.yml for inactive ConfigurationFactory org.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory
,大体就是YamlConfigurationFactory
不是激活状态,就试着全局搜索这句话,找到了如下的代码,
|
|
很明显这里的factory
就是YamlConfigurationFactory
,很容易就能找到这个isActive
是怎么实现的,这里找到了如下的代码:
|
|
从代码中可以看出,需要dependencies
这里面的这几个类都在类路径上才能激活,再检查一下项目就发现项目中少了jackson-databind
的依赖,这里在pom.xml
文件中加上jackson-databind
依赖就可以解决问题。
对比两次使用经历发现了,在第一个项目中,我添加了spring-boot-starter-web
依赖,添加之后已经引入了jackson-databind
依赖,所以在第一个项目中不会出现问题,第二个项目中由于没有jackson-databind
依赖,所以导致了不能成功加载log4j2.yml
配置文件。
- 原文作者:SilentStorm
- 原文链接:https://silentstormic.top/post/log4j2-problem/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。