如何使用Spring Boot 1.3.6.RELEASE使Log4j2可根据环境进行配置。

10 浏览
0 Comments

如何使用Spring Boot 1.3.6.RELEASE使Log4j2可根据环境进行配置。

我想根据我的application.properties文件更改log4j2.xml文件中的一些属性,例如定义一些属性,然后在log4j2中替换那些作为参数的属性。我尝试了不同的方法,但还没有得到正确的结果。我希望根据环境(DEV、QA或PROD)有不同的配置。如何实现这一点?

我正在尝试在我的属性中添加以下内容:

#log4j2.xml文件的占位符

log.file.path=/opt/tomcat/logs

log.file.name=dummydummy

log.file.size=100 MB

log.level=DEBUG

我的log4j2如下:

????

my-log

filePattern="${log.file.path}${log.file}-%d{yyyy-MM-dd}-%i.log.gz">

pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID} --- [%t] %c{1}(%M:%L) : %m%n%wEx" />

pattern="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1}(%M:%L)}{cyan} %clr{:}{faint} %m%n%wEx" />

level="warn" />

0
0 Comments

问题的原因是需要将Log4j2配置文件根据环境进行配置,并且可以在不同的配置文件之间进行切换。解决方法是使用Spring Boot的properties文件和Log4j2的properties lookup元素来实现。

首先,在一个名为env.properties的文件中定义需要配置的属性,如log.file.path、log.file.name、log.file.size和log.level。

然后,在log4j2.xml配置文件中使用properties lookup来引用这些属性,使用${bundle:env:property_name}的语法。这样,每个属性引用都会被实际的值替换。

如果需要在不同的环境中切换配置文件,可以为每个环境创建一个独立的log4j2配置文件和属性文件。可以通过将log4j2配置文件的名称作为JVM参数-Dlog4j.configurationFile=来指定使用哪个配置文件。

如果需要使用env.yml文件,可以参考Log4j2的文档来进行配置。

最后,如果在使用解决方法后仍然遇到错误,可能是由于将字符串转换为Level类型时出现了问题。可以检查日志级别的配置是否正确,并确保Level类型的字符串表示与Log4j2所支持的级别常量一致。

0
0 Comments

自从log4j 2.14.0版本起,您现在可以在没有Spring Cloud的情况下使用Spring Boot环境变量,而无需直接引用属性文件。您至少需要Spring Boot 2.0.3。

在log4j2.xml配置文件中,您可以使用Spring Boot环境变量进行配置。例如,要使用Spring应用程序的名称作为日志记录器的属性,您可以在配置文件中添加以下内容:

<property name="applicationName">${spring:spring.application.name}</property>

这将使log4j2能够使用Spring Boot的环境变量来动态配置日志记录器。

如果您想了解更多关于使用Spring Boot环境变量配置log4j2的信息,可以查看官方文档:https://logging.apache.org/log4j/2.x/log4j-spring-boot/index.html

另外,您还可以通过Maven仓库获取log4j2的Spring Boot支持的依赖项:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-spring-boot

需要注意的是,这个特性实际上从Log4j 2.13.0版本就开始可用了,您可以参考Stack Overflow上Ralph的回答:https://stackoverflow.com/a/60196623/11748454

不过,Ralph的回答是关于Spring Cloud Config支持的,我在回答中明确指出,自2.14.0版本起,您不需要导入Spring Cloud。如果您在mvn仓库中搜索(mvnrepository.com/artifact/org.apache.logging.log4j/…),可以看到Spring Cloud Config Client需要依赖Spring Cloud才能工作,而这是一个较重的依赖。与此相反,Log4j2对Spring Boot的支持只需要依赖Spring Context和Spring Boot(mvnrepository.com/artifact/org.apache.logging.log4j/…)。

通过使用Spring Boot环境变量配置log4j2,您可以实现动态可配置的日志记录器,使应用程序在不同的环境中具有不同的日志行为。这为开发人员提供了更大的灵活性和可维护性。

0
0 Comments

好的!我看了一下logging.apache.org/log4j/2.x/changes-report.html。还有其他的文档吗?

0