在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
答案 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)
有两个问题:
外部配置: - 在春季启动罐中尝试并在我的下面工作
-Dlog4j.configuration=file:/Users/test/Any-Folder/log4j.properties
Spring日志记录接管 - 因为您需要排除日志记录模块。 PFB Gradle构建的配置。
configurations {
all*.exclude module : 'spring-boot-starter-logging'
}