如何在 Spring Boot 中获取 log4j2.properties 文件以从 pom.xml 读取文件名
Posted
技术标签:
【中文标题】如何在 Spring Boot 中获取 log4j2.properties 文件以从 pom.xml 读取文件名【英文标题】:How to get log4j2.properties file to read filename from pom.xml in Spring Boot 【发布时间】:2018-07-26 14:10:06 【问题描述】:我一直在网上搜索,我可能错过了。但我想在我的代码中实现的是,让 log4j2.properties 文件读取 Spring Boot 项目中 pom.xml 中定义的文件名。像下面的东西。
pom.xml:
<properties>
<log.file>/expo/net/logs/xol/aws.log</log.file>
<status.file>/export/net/logs/xol/tdlg.log</status.file>
</properties>
log4j2.properties:
appender.main.type=RollingFile
appender.main.name=MAIN
#appender.main.fileName=$log.file
appender.main.filePattern=$log.file.%dyyyyMMddHH
appender.main.layout.type=PatternLayout
appender.main.layout.pattern=%dMM/dd/yyyy HH:mm:ss.SSS %-5p %highlight%t %replace%msg\n\r|\n|\r %n
appender.main.policies.type=Policies
appender.main.policies.time.type=TimeBasedTriggeringPolicy
appender.main.policies.time.interval=1
appender.main.policies.time.modulate=true
我的期望是在运行 maven 时应该替换正确的值。 有什么建议我哪里出错了吗?
【问题讨论】:
这个链接可能会对你有所帮助:- mojohaus.org/properties-maven-plugin/… 我认为最好的办法可能是使用过滤... 我确实尝试过过滤,但似乎不起作用。我认为以某种方式父母的事情搞砸了一切。log4j2.properties
位于resources
文件夹中。否则应该明确提供给 maven-resources-plugin 进行过滤
它在资源文件夹中。但我觉得 Spring-Boot 的工作方式不同。
【参考方案1】:
我想我找到了解决方案。有人问过类似的问题。
Maven resource filtering not working - because of spring boot dependency
下面的链接有说明
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html
在我的 log4j2.properties 文件中,我将“$”和“”替换为“@”。
appender.main.type=RollingFile
appender.main.name=MAIN
#appender.main.fileName=@log.file@
appender.main.filePattern=@log.file@.%dyyyyMMddHH
appender.main.layout.type=PatternLayout
appender.main.layout.pattern=%dMM/dd/yyyy HH:mm:ss.SSS %-5p %highlight%t %replace%msg\n\r|\n|\r %n
appender.main.policies.type=Policies
appender.main.policies.time.type=TimeBasedTriggeringPolicy
appender.main.policies.time.interval=1
appender.main.policies.time.modulate=true
工作就像一个魅力。感谢大家的投入。
【讨论】:
以上是关于如何在 Spring Boot 中获取 log4j2.properties 文件以从 pom.xml 读取文件名的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Boot 应用程序初始化 log4j?