Hintergrund: Ich habe die Datei log4j.xml für unsere Feder-basierte Anwendung konfiguriert, die wie folgt aussieht.Externalize Eigenschaft Konfiguration für 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>
Nun möchte ich log4j Log-Anweisungen schreiben mit sagen wir 'countryName'. Und dieser 'countryName' sollte über eine externe Eigenschaftendatei konfiguriert werden.
Zum Beispiel wird das "Gemfire-Muster" den Namen der externalisierten Eigenschaft $$ {countryName} haben.
<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>
In Anbetracht dieser log4j system properties, in meinem Fall ist das log4j.component.properties
nicht von log4j abgeholt.
Haben Sie irgendwelche Gedanken darüber, wie Sie einen Eigenschaftswert aus der externen Eigenschaftendatei in log4j.xml abrufen können?
Referenzen:
- how-to-read-property-variable-from-file-into-log4j2
- log4j system properties
- log4j properties substitution
Vielen Dank im Voraus.