2017-03-22 1 views
0

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} &lt;%thread&gt; 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} &lt;%thread&gt; 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:

Vielen Dank im Voraus.

Antwort

0

log4j.component.properties wird verwendet, um log4j spezifische Systemeigenschaften wie log4j.configurationFile, org.apache.logging.log4j.level usw.

Um auf Benutzer definierten Eigenschaften umfassen die Eigenschaftsdatei in der logback Konfiguration und beziehen sich auf die Tasten ${KEY}

<configuration> 
 

 
    <property file="country.properties" /> 
 

 
    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
 
    <file>${countryName}</file> 
 
    ...
hinzufügen

Logback ermöglicht es Ihnen auch Teile des Konfigu externalisieren mit der Dateieinfügungsfunktion. https://logback.qos.ch/manual/configuration.html#fileInclusion

<configuration> 
 
    <include file="src/main/java/chapters/configuration/includedConfig.xml"/> 
 
...
Stellen Sie sicher, dass der Inhalt in der externen XML-Datei wird mit <included> </included> Tag

Note- Systemeigenschaften (-Dcountry = "") und Umgebungsvariablen können auch genannt werden encolsed Verwendung ${PROPERTY_NAME} innerhalb der Logback-Konfiguration.

Verwandte Themen