2016-12-07 4 views
0

要件ごとに、DEVおよびQA環境でINFOレベルのデータをログに記録する必要がありますが、本番環境およびIAT環境ではERRORレベルのデータのみを記録します。Mule ESBのlog4j2.xmlでログレベルを動的に引き渡す

私たちは上記の環境で必要とするように、muleのガイドラインに従って、log4j.xmlを$ {mule.home}/confディレクトリに構成することができます。このようにして要件を満たすことができますが、構成レベルで変更はありません。多くのI &チーム承認が必要です。

アプリケーションレベルでlog4j2.xmlでこの変更を加えたいと考えています。現在、以下に示すようにログレベルのVM引数を渡しています。

サーバでlog.levelプロパティを設定するには、私が&チームと協力して作業する必要があるため、この方法も必要ありません。 良いことは、DEV、QA、STG、PRODの値を持つすべての環境でmule.envプロパティを使用できることです。

mule.envの値に基づいてログレベルを評価できる他の方法をお勧めしますか?

<AsyncLogger name="org.glassfish.grizzly" level="${sys:log.level}"/> 
<AsyncLogger name="org.asynchttpclient" level="${sys:log.level}"/> 
<AsyncLogger name="httpclient.wire" level="${sys:log.level}"/> 
<AsyncLogger name="com.ning.http.client.providers.grizzly" level="${sys:log.level}"/> 
<AsyncLogger name="WageGarnishment" level="${sys:log.level}"/> 
<AsyncLogger name="org.mule.modules.jobtrackingservices.generated.adapters.JobtrackingservicesConnectorConnectorConfigBasicAdapter" level="${sys:log.level}"/> 
<AsyncLogger name="org.mule.module.http.internal.HttpMessageLogger" level="${sys:log.level}"/> 
<AsyncLogger name="Main Flow" level="${sys:log.level}"/> 
<AsyncLogger name="CDMValidator" level="FATAL"/> 
<AsyncLogger name="com.adp.xyz.cdmvalidator.validator.BaseValidator" level="${sys:log.level}"/> 
<AsyncLogger name="com.adp.xyz" level="${sys:log.level}"/> 

答えて

0

log4j2はMuleプロパティについて何も知らないので、配備時にプロパティを置き換えることはできないようです。 Mavenを使用する場合は、構築時にMaven Resource pluginを使用してプロパティを置き換えることができます。

0

ログレベルを設定するためにloggerのsetLevelメソッドを呼び出すことができるBeanをアプリケーションに含めることができます。 環境名またはログレベルをこのBeanの引数として渡すことができます。 invokeコンポーネントを使用してメソッドを呼び出し、起動時にこのフローを実行できます。

関連する問題