如何在 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/… 我认为最好的办法可能是使用过滤... 我确实尝试过过滤,但似乎不起作用。我认为以某种方式父母的事情搞砸了一切。 org.springframework.bootspring-boot-starter-parent1.5.9.RELEASE 确保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?

如何覆盖spring boot BOM的版本

Spring Boot 日志

如何使用 Spring Boot 将 Log4j 添加到 maven 项目

Spring boot中使用log4j

springboot中logback和log4j冲突,保留log4j