背景:我为基于spring的应用程序配置了log4j.xml文件,如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="FATAL" shutdownHook="disable" packages="com.gemstone.gemfire.internal.logging.log4j">
<Properties>
<Property name="gemfire-pattern">[%level{lowerCase=true} %date{yyyy/MM/dd HH:mm:ss.SSS z} <%thread> tid=%tid %C{1.}] %message%n%throwable%n< /Property>
</Properties>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="${gemfire-pattern}"/>
</Console>
<RollingFile name="eventLogFile" fileName="/opt/data/service/logs/events.log"
filePattern="/opt/data/service/logs/events-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS} %p - %c{1}: %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<DefaultRolloverStrategy max="20" fileIndex="max"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.gemstone" level="INFO" additivity="true">
<filters>
<MarkerFilter marker="GEMFIRE_VERBOSE" onMatch="DENY" onMismatch="NEUTRAL"/>
</filters>
</Logger>
<Logger name="com.app.mypackage" level="INFO" additivity="true">
<AppenderRef ref="eventLogFile"/>
</Logger>
<Root level="INFO">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
现在,我想让log4j写下日志语句,让我们说“countryName&#39;”。而且,这个国家名称&#39;应该通过外部属性文件配置。
例如,&#34; gemfire-pattern&#34;将具有此外部化属性名称$$ {countryName}。
<Property name="gemfire-pattern">[$${countryName} %level{lowerCase=true} %date{yyyy/MM/dd HH:mm:ss.SSS z} <%thread> tid=%tid %C{1.}] %message%n%throwable%n< /Property>
考虑到这个log4j system properties,在我的情况下,log4j没有选择log4j.component.properties
。
有关如何从log4j.xml中的外部属性文件获取属性值的任何想法?
参考文献:
提前致谢。
答案 0 :(得分:0)
log4j.component.properties
用于添加log4j特定的系统属性,例如log4j.configurationFile
,org.apache.logging.log4j.level
等。
要引用用户定义的属性,请在logback配置中包含属性文件,并使用${KEY}
<configuration>
<property file="country.properties" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${countryName}</file>
...
&#13;
Logback还允许您使用“文件包含”功能将部分配置外部化。 https://logback.qos.ch/manual/configuration.html#fileInclusion
<configuration>
<include file="src/main/java/chapters/configuration/includedConfig.xml"/>
...
&#13;
<included> </included>
标记所包围
注意 - 系统属性(-Dcountry =&#34;&#34;)和环境变量也可以在logback配置中使用${PROPERTY_NAME}
引用。