我想根据maven项目版本生成日志文件。
在log4j.xml文件中,我添加以下行:
<appender name="rollingFileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${catalina.home}/logs/ussdMoneyTransfert_logFile${project.version}.log" />
</appender>
但它没有用。
答案 0 :(得分:1)
这可以通过启用resource filtering:
来完成<project>
...
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
...
</resources>
...
</build>
...
</project>
启用资源过滤后,默认情况下,Maven将使用属性值替换${...}
的所有出现(如果该名称存在)。属性可以来自系统属性,项目属性,过滤器资源和命令行。
${project.version}
是Maven在构建期间添加的一个属性。在过滤期间,它将被当前的Maven项目版本替换。
答案 1 :(得分:1)
在springboot中启用资源过滤后,我将$ {project.version}更改为@ project.version @,它可以正常工作!。
答案 2 :(得分:0)
答案很简单...假设你有一个 pom.xml 和 log4j2.yml
pom.xml
<project xmlns="http://maven....Schema-instance"
....
<artifactId>ArtifactName</artifactId>
<version>2.36.2-SNAPSHOT</version>
将 @project.version@
添加到日志文件名,这会将版本附加到实际日志文件名。
log4j2.yml
Configuration:
name: "AppName"
monitorInterval: 30
status: info
....
RollingFile:
- name: json-log-file
fileName: "${sys:tomcat.log.dir}/${app_log}-@project.version@.log.json"
filePattern: "${app_log}-@project.version@-%d{MM-dd-yyyy}-%i.log.gz"
如果你注意到这是直接从 pom.xml 读取它,其中项目是父标签,版本是子标签。