外置Tomcat启动SpringBoot应用,日志profile
2018-07-17 本文已影响681人
Tommie_28c7
日志profile相关配置如下

在主配置文件application.properties中声明profile为dev环境
spring.profiles.active=dev
在application-dev.properties文件中指定了日志配置文件为类路径下的log4j2-dev.xml
logging.config=classpath:log4j2-dev.xml
但是项目启动的时候,在LoggingApplicationListener中的initializeSystem方法中打断点,发现获取到的loggingConfig属性却不是我们配置的类路径下的log4j2-dev.xml
而是IDEA这个开发工具自带的tomcat插件中的日志配置

出现的问题是, 最后项目使用的log4j2的配置文件是 类路径下的log4j2.xml, 并不是我指定的log4j2-dev.xml
当我将log4j2.xml改名为log4j2.xml.bk时,使用的是log4j2默认的配置, 如下图

很是不解,想debug源码,但是不知道该从哪下手,最后去log4j2的官网查了下资料,
官网文档中Configuration章节给出了log4j2的自动配置加载的先后顺序, 大体翻译了一下


找到一种解决方案, 通过jvm参数配置日志文件的方案,
在IDEA tomcat插件中的vm options中配置如下, 然后ok apply

后记 : 奇怪的是, 使用IDEA自带的Tomcat起SpringBoot项目, 以及将项目部署到Win下的Tomcat, 日志profile功能都会失效(类路径下存在log4j2.xml则使用该文件当作当前应用的日志配置, 不存在该文件则按log4j2默认配置输出的日志 ,默认配置仅输出到控制台)
目前找到的解决办法就是上述通过在JVM参数中指定日志文件来启动项目,但是这跟不用SpringBoot的profile功能没啥区别
但是将项目部署到Linux下的Tomcat, 日志Profile功能就没问题, 无需手动指定JVM参数.
找不到问题的源头, 烦 : (