如何将maven项目版本放入日志文件名(log4j.xml)

时间:2015-09-04 10:17:26

标签: maven maven-2 log4j2

我想根据maven项目版本生成日志文件。

在log4j.xml文件中,我添加以下行:

<appender name="rollingFileAppender" class="org.apache.log4j.RollingFileAppender">
    <param name="file" value="${catalina.home}/logs/ussdMoneyTransfert_logFile${project.version}.log" />
</appender>

但它没有用。

3 个答案:

答案 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 读取它,其中项目是父标签,版本是子标签。