美文网首页
外置Tomcat启动SpringBoot应用,日志profile

外置Tomcat启动SpringBoot应用,日志profile

作者: Tommie_28c7 | 来源:发表于2018-07-17 01:22 被阅读681次

    日志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

    也可以配置成-Dlog4j.configurationFile=classpath:log4j2-dev.xml

    后记 : 奇怪的是, 使用IDEA自带的Tomcat起SpringBoot项目, 以及将项目部署到Win下的Tomcat, 日志profile功能都会失效(类路径下存在log4j2.xml则使用该文件当作当前应用的日志配置, 不存在该文件则按log4j2默认配置输出的日志 ,默认配置仅输出到控制台)

    目前找到的解决办法就是上述通过在JVM参数中指定日志文件来启动项目,但是这跟不用SpringBoot的profile功能没啥区别

    但是将项目部署到Linux下的Tomcat, 日志Profile功能就没问题, 无需手动指定JVM参数.

    找不到问题的源头,  烦 : (

    相关文章

      网友评论

          本文标题:外置Tomcat启动SpringBoot应用,日志profile

          本文链接:https://www.haomeiwen.com/subject/aqgipftx.html