2016-07-26 10 views
1

Wir haben verschiedene Mule-Anwendungen auf unserem Mule 3.6.4-Server implementiert, alle mit ihrer eigenen log4j-Konfiguration, die im Klassenpfad der Anwendung definiert ist (siehe unten). (Beispiel 1)Log4j2 Mule Ausgabe

<?xml version="1.0" encoding="utf-8"?> 
<Configuration> 
    <Appenders> 

    <Console name="console" target="SYSTEM_OUT"> 
     <PatternLayout 
       pattern="&lt;%-4d{DATE}&gt; &lt;%-5p&gt; &lt;%t&gt; &lt;%m&gt; %n" /> 
    </Console> 

    <RollingFile name="file" 
       fileName="${sys:mule.home}/logs/apptest.log" 
       filePattern="${sys:mule.home}/logs/apptest.%d{yyyy-MM-dd}"> 

     <PatternLayout 
       pattern="&lt;%-4d{DATE}&gt; &lt;%-5p&gt; &lt;%t&gt; &lt;%m&gt; %n" /> 
     <TimeBasedTriggeringPolicy /> 
    </RollingFile> 

    </Appenders> 

    <Loggers> 
    <AsyncRoot level="INFO"> 
     <AppenderRef ref="console" /> 
     <AppenderRef ref="file" /> 
    </AsyncRoot> 
    </Loggers> 

</Configuration> 

Und diese Anwendungen sind in dieser Reihenfolge in Mule ESB

Application1 Application2 Appplication3

für die Anwendungen Aus irgendeinem Grund alle Protokollierung bereitgestellt wird auf der Konsole ausgibt und nur die Protokolldatei für Anwendung 3. Die Protokollierung funktioniert nicht für Anwendung 1 oder 2?

Kann jemand Licht darauf werfen? Ist das ein Problem mit dem Classloader? Wir laufen Mule 3.6.4

Dank

Antwort

1

Alles trösten wird, weil Sie <AppenderRef ref="console" /> in Ihrem <Logger> config. Sie log4j config sollte in jeder {app}/classes/sein.

Für Datei appender haben Sie für jede Anwendung mit unterschiedlichen Dateinamen versucht -

<RollingFile name="file" 
       fileName="${sys:mule.home}/logs/app1test.log" 
       filePattern="${sys:mule.home}/logs/app1test.%d{yyyy-MM-dd}"> 

für die zweite app -

<RollingFile name="file" 
        fileName="${sys:mule.home}/logs/app2test.log" 
        filePattern="${sys:mule.home}/logs/app2test.%d{yyyy-MM-dd}"> 
+0

"Du LOG4J Config sollte in jeder {app} bei der sein/classes /." Es ist. Wir haben ein log4j2 für jede Anwendung. Das Beispiel, das Sie oben angegeben haben, ist genau das, was wir tun. Wir haben drei log4j-Dateien für jede Anwendung in ihrem Klassenpfad – user3520080

+0

Haben Sie Fehler in mule-ee.log? –

+0

Nein, nichts, die Protokollierung von allen drei Anwendungen wird in mule_ee.log und dem dritten Anwendungsprotokoll, das die letzte Anwendung ist, ausgegeben. Die Anwendungsprotokollierung ist für die erste und zweite Anwendung unterbrochen. Wir können die Protokollierung sehen, wenn sie implementiert wird, aber keine der Logger ' user3520080

0

Haben Sie versucht, die RollingFile Appen mit hängen Parameter für? Sie können auch einen eindeutigen Wert für den Namen "RollingFile" für jede App angeben. Etwas wie folgt aus:

Für Application1 -

<RollingFile name="app2_file" 
      fileName="${sys:mule.home}/logs/app1test.log" 
      filePattern="${sys:mule.home}/logs/app1test.%d{yyyy-MM-dd}" append="true"> 

    <PatternLayout 
      pattern="&lt;%-4d{DATE}&gt; &lt;%-5p&gt; &lt;%t&gt; &lt;%m&gt; %n" /> 
    <TimeBasedTriggeringPolicy /> 
</RollingFile> 

Für Application2 -

<RollingFile name="file" 
      fileName="${sys:mule.home}/logs/appt2est.log" 
      filePattern="${sys:mule.home}/logs/app2test.%d{yyyy-MM-dd}" append="true"> 

    <PatternLayout 
      pattern="&lt;%-4d{DATE}&gt; &lt;%-5p&gt; &lt;%t&gt; &lt;%m&gt; %n" /> 
    <TimeBasedTriggeringPolicy /> 
</RollingFile> 
+0

Ja Ich habe einen eindeutigen Wert für jede App Ich habe nur ein Beispiel für die Protokolle einer Anwendung veröffentlicht. Alle drei haben dieselbe Konfiguration, aber einen anderen Protokolldateinamen. Ich habe append = "true" versucht, aber kein Glück. – user3520080