Springboot外化log4j配置

时间:2016-07-12 16:14:31

标签: spring-boot log4j

在springboot应用程序中,我有一个jar,然后是一个带有application.properties,applicationContext.xml和log4j ...属性文件的子目录配置。

我正在尝试外化log4j配置。 application.properties以这种方式外化。

但是,当springboot运行时,它正在使用jar文件中的log4j配置文件。通过使用-Dlog4j.debug选项,我可以看到log4j首先使用我的外部文件,但是当spring开始时它会用jar中的那个覆盖log4j设置。

这是一个启动示例(包含所有选项)

java -Dlog4j.debug 
   -Dlogging.config="file:/opt/config/log4j-qa.properties" 
   -Dlog4j.configuration="file:/opt/config/log4j-qa.properties" 
   -jar /opt/myjarName.jar 
   --spring.config.location=/opt/config/

首次启动log4j状态 log4j:从URL文件中读取配置:/opt/config/log4j-qa.properties

然后在springboot start log4j:从URL jar读取配置:file:/opt/dms-events-api.jar!/log4j-qa.properties

但我希望它只读取外部文件文件:/opt/config/log4j-qa.properties

2 个答案:

答案 0 :(得分:0)

分辨率:

在我们的申请中我们有线 @ImportResource("类路径:applicationContext.xml的&#34) 然后从类路径中定义log4j属性文件:

简单的解决方案 1.在api应用程序的根目录下创建一个/ config目录,并将属性文件放在那里 2.删除ImportResource行,现在不需要它 3.在application.properties文件中添加一行  logging.config = file:config / log4j - $ {our environment var} .properties

解释 通过在项目的根目录创建/ config目录 我们可以像往常一样在eclipse中工作并找到我们的属性文件。 - 然后外化配置 只需在应用程序jar所在的位置添加一个config目录,然后将属性文件放在那里。

答案 1 :(得分:0)

有两个问题:

  1. 外部配置: - 在春季启动罐中尝试并在我的下面工作

    -Dlog4j.configuration=file:/Users/test/Any-Folder/log4j.properties
    
  2. Spring日志记录接管 - 因为您需要排除日志记录模块。 PFB Gradle构建的配置。

    configurations {
         all*.exclude module : 'spring-boot-starter-logging'   
    }