我想根据我的application.properties更改log4j2.xml文件中的某些属性,例如,定义一些属性,然后在log4j2中替换作为参数的那些属性。
我采用了不同的方法,但仍然没有得到正确的结果。我想根据环境(DEV,QA或PROD)进行不同的配置。有人可以指导我如何做到这一点吗?
所以,我试图在我的财产
#Place holders for log4j2.xml file log.file.path=/opt/tomcat/logs log.file.name=dummydummy log.file.size=100 MB log.level=DEBUG
请在下面找到我的log4j2示例…
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN" monitorInterval="30"> <Properties> <Property name="PID">????</Property> <property name="name">my-log</property> </Properties> <Appenders> <RollingFile name="file" fileName="${log.file.path}${log.file}.log" filePattern="${log.file.path}${log.file}-%d{yyyy-MM-dd}-%i.log.gz"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID} --- [%t] %c{1}(%M:%L) : %m%n%wEx" /> <Policies> <TimeBasedTriggeringPolicy /><!-- Rotated everyday --> <SizeBasedTriggeringPolicy size="${log.file.size}" /> <!-- Or every 100 MB --> </Policies> </RollingFile> <Console name="Console" target="SYSTEM_OUT" follow="true"> <PatternLayout 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" /> </Console> </Appenders> <Loggers> <Logger name="org.hibernate.validator.internal.util.Version" level="warn" /> <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" /> <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" /> <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" /> <Logger name="org.springframework.web" level="error" /> <Root level="${log.level}"> <AppenderRef ref="Console" /> <AppenderRef ref="file" /> </Root> </Loggers> </Configuration>
谢谢
属性查找元素允许从log4j配置中的外部属性文件引用属性。对于您的示例,应该是这样的:
log.file.path=/opt/tomcat/logs
log.file.name=dummydummy log.file.size=100 MB log.level=DEBUG
属性查找应定义为 log4j2.xml的 属性:
<Configuration> <Properties> <property name="log.file.path">${bundle:env:log.file.path}</property> <property name="log.file.name">${bundle:env:log.file.name}</property> <property name="log.file.size">${bundle:env:log.file.size}</property> <property name="log.level">${bundle:env:log.level}</property> </Properties>
现在,属性可以在附加器中以$ {property_name}表示法引用。每个属性引用都将使用 env.properties中 的实际值进行插值。
您可以在此处找到属性查找的另一个示例。