2016-11-26 3 views
1

Ich versuche, den Protokolldateipfad in mule dynamisch zu ändern Ich habe die Systemeigenschaft in einer Ausdruckskomponente festgelegt, aber da log4j2.XML den Wert zur Kompilierzeit selbst dekodiert, wird er nicht reflektiert Legen Sie das Monitorintervall in log4j.XML fest, aber es funktioniert nicht, wie man den dynamischen Dateipfad erreicht?Dynamischer Protokolldateipfad in mule

Antwort

0

Um den Namen und Pfad der Protokolldatei dynamisch festzulegen, muss der Pfad in der Umgebungsvariablen festgelegt werden.

<RollingFile name="RollingFile" fileName="${sys:CustomapPath}/${sys:CustomapplicationName}_WARN.log" 
filePattern="${sys:CustomapPath}/test/${sys:CustomapplicationName}-%d{yyyy-MM-dd}-WARN-%i.log"> 

und Sie setzen diese Variablen in Ihrem apps.properties: - -:
Im log4j2.xml, können Sie so etwas wie das folgende tun

CustomapplicationName=Common-logging-Util 
CustomapPath=E:/backup/test/log 

oder wenn Sie wollen es dynamischer gestalten Sie können diese Werte von VM Argumente als -DCustomapPath=E:/backup/test/log -DCustomapplicationName=Common-logging-Util

und im Standalone-Server als -M-DCustomapplicationName=Common-logging-Util -M-DCustomapPath=E:/backup/test/log

passieren

So, jetzt, wenn die Anwendung geladen wird, finden Sie die Protokolldateien an dem von Ihnen erwähnten Speicherort generiert.
Aber Sobald es geladen ist, können Sie den Protokolldateipfad von dort nicht ändern, da der Speicherort bereits geladen wurde.

0

Wenn Sie Laufzeitänderungen an der Protokollierung vornehmen möchten, müssen Sie einen neuen Log4J-Protokollierer in einer Java-Klasse initialisieren. Andernfalls müssen Sie die Mule-Anwendung neu starten.