2017-03-22 24 views
0

背景:私たちのspringベースのアプリケーション用に設定されたlog4j.xmlファイルは、以下のようになっています。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> 

ここで、私はlog4jに 'countryName'と言ってログ文を書きたいと思っています。そして、この 'countryName'は外部プロパティファイルを介して設定する必要があります。

たとえば、「gemfire-pattern」は、この外部化されたプロパティ名$$ {countryName}を持ちます。

<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> 

このlog4j system properties考えると、私の場合には、log4j.component.propertiesはlog4jのでピックアップされていません。

log4j.xmlの外部プロパティファイルからプロパティ値を取得する方法について考えていますか?

参考文献:事前に

感謝。

答えて

0

log4j.component.properties は、log4j.configurationFileようにlog4jの特定のシステムプロパティを追加するために使用されorg.apache.logging.log4j.level

、ユーザ定義されたプロパティを参照logback構成内のプロパティファイルを含み、使用してキーを参照する${KEY}

<configuration> 
 

 
    <property file="country.properties" /> 
 

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

Logbackはまた、あなたがconfigurの部品をexternaliseすることができますファイル包含機能を使用しています。 https://logback.qos.ch/manual/configuration.html#fileInclusion

<configuration> 
 
    <include file="src/main/java/chapters/configuration/includedConfig.xml"/> 
 
...
外部xmlファイルの内容は、(-Dcountry = "")と環境変数も参照することができる <included> </included>タグ

ノート・システムのプロパティでencolsedされていることを確認しますログバック構成内で${PROPERTY_NAME}を使用します。

関連する問題