java 是否可以在log4j信息中包含构建日期和版本

vohkndzv  于 2022-10-30  发布在  Java
关注(0)|答案(3)|浏览(115)

我想在日志语句中包含构建信息(构建版本,日期)。可以吗?我在Java 8应用程序中使用log4j。

0tdrvxhp

0tdrvxhp1#

您可以在日志语句中包含生成日期和版本。
要实现这一点,您必须使用两种方法
1.动态获取或从文件获取生成日期和版本
1.更新日志记录模式
构建插件配置:如果您使用的是Sping Boot ,则pom.xml应该包含

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>build-info</id>
            <goals>
                <goal>build-info</goal>
            </goals>
        </execution>
    </executions>
</plugin>

访问生成属性:在配置spring-boot-maven插件并构建应用程序之后,您可以通过BuildProperties对象访问有关应用程序构建的信息。

@Autowired
BuildProperties buildProperties;

获取值

buildProperties.getName(); // Artifact's name from the pom.xml file    
buildProperties.getVersion(); // Artifact version    
buildProperties.getTime(); // Date and Time of the build    
buildProperties.getArtifact(); // Artifact ID from the pom file    
buildProperties.getGroup(); // Group ID from the pom file

使用ThreadContext或MDC添加值

MDC.put("build_date", buildProperties.getTime());
MDC.put("build_version", buildProperties.getVersion());

更新日志记录模式:样本模式

请注意%X{userName} -这是您从Map诊断上下文(MDC)提取数据的方式

log4j.appender.consoleAppender.layout.ConversionPattern = %-4r [%t] %5p %c %x - %m - %X{build_date} - %X{build_version}%n
osh3o9ms

osh3o9ms2#

你可以用lookups来实现它,你可以用如下的方式来存储构建日期:

org.apache.logging.log4j.ThreadContext.put("buildDate", "01/01/1970");

然后在您的log4j配置中使用它,如下所示:

<File name="Application" fileName="application.log">
  <PatternLayout>
    <pattern>%d %p %c{1.} [%t] $${ctx:buildDate} %m%n</pattern>
  </PatternLayout>
</File>

在我的例子中,我已经硬编码了日期的值,但是你可以从配置文件或者环境变量中获取它。

cmssoen2

cmssoen23#

如果您使用的是Spring,您还可以在www.example.com上执行Sping Boot 查找https://logging.apache.org/log4j/2.x/manual/lookups.html#SpringLookup
1.你有一个pom.xml,假设你想记录log4j中的project.version

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.xyx</groupId>
    <artifactId>cpf-orchestration</artifactId>
    <version>Oct27_test1</version>
    <name>cpf</name>
    ...

1.添加此依赖项

<!-- Require for log4j to log spring properties -> ${spring:x} -->
       <dependency>
           <groupId>org.apache.logging.log4j</groupId>
           <artifactId>log4j-spring-boot</artifactId>
           <version>2.16.0</version>
       </dependency>

1.您的application.properties,请指涉属性

application-version=@project.version@

1.更新您的log4j2-spring.xml

<Property name="SPLUNK_PATTERN"
                  value="%d{dd MMM yyyy HH:mm:ss}{America/Los_Angeles} | %logger:%M()| version:${spring:application-version} | msg=%m | %throwable{20}"/>

相关问题