2016-12-07 1 views
0

Gemäß den Anforderungen möchten wir INFO-Level-Daten in DEV- und QA-Environments protokollieren, aber in Production- und IAT-Umgebungen möchten wir nur FEHLER-Level-Daten protokollieren.Log-Level dynamisch übergeben in log4j2.xml in Mule ESB

Gemäß Mule-Richtlinien können wir log4j.xml im Verzeichnis $ {mule.home}/conf konfigurieren, wie wir es in den oben genannten Umgebungen benötigen. Auf diese Weise können wir unsere Anforderung erfüllen, aber wir haben keine Änderung auf der Konfigurationsebene, es erfordert viele I & O-Team-Genehmigungen.

Wir möchten diese Änderung in log4j2.xml auf Anwendungsebene vornehmen. Momentan übergebe ich ein vm-Argument für den Log-Level, wie unten gezeigt.

Wir wollen auch nicht mit diesem Ansatz gehen, weil wir mit I & O-Team arbeiten müssen, um log.level-Eigenschaft in Servern zu konfigurieren. Gute Sache ist, haben wir mule.env Eigenschaft in allen Umgebungen, die einen Wert DEV, QA, STG und PROD hat.

Können Sie mir bitte einen anderen Ansatz vorschlagen, bei dem ich den Log-Level basierend auf dem mule.env-Wert auswerten kann?

<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}"/> 

Antwort

0

Es scheint nicht möglich zu sein, um die Eigenschaften bei der Bereitstellungszeit zu ersetzen, weil log4j2 nichts über Mule Eigenschaften kennt. Wenn Sie Maven verwenden, können Sie die Eigenschaften zur Erstellungszeit unter Verwendung der Maven Resource plugin ersetzen.

0

Sie können eine Bean in Ihrer Anwendung haben, die die setLevel-Methode des Loggers aufrufen kann, um den Log Level einzustellen. Sie können den Umgebungsnamen oder die Protokollstufe als Argument für diese Bean übergeben. Sie können die Methode mit der Aufrufkomponente aufrufen und diesen Ablauf beim Start ausführen lassen.