# Mal wieder ein Log4J problem



## takidoso (11. August 2008)

Hallo und Halli,
ich habe folgende Situation: 
Eine Art Rahmenprogramm welches einen simplen Plugin Mechanismus aufweist ruft unter anderem 2 kLeine Anwendungen auf die Log4J verwenden. 
Ich habe für beide Programmen jeweils verschiedene Properties-Dateien für die Log-Informationen bereitgestellt, die ich in jedem der beiden Programme innerhalb ihrer Initialisierungsphase mit *org.apache.log4j.PropertyConfigurator.configureAndWatch*(propertiesFileName); "bekannt gebe".
Nun passiert es jedoch bedauerlicherweise, dass vornehmlich Log-Einträge munter in einer Datei auftreten, wobei angemerkt sei, dass beide Applikationen in extra Threads durchaus auch parallel laufen.
Jetzt Meine Frage: Kann ich mit geschickter (besserer) log4j-Konfiguration dem Logger die Einträge in applikationssgetrennte Dateien schreiben lassen? Wie müsste das aussehen? Und warum packt der Logger das ganze in 2 Dateien aber mischt es dennoch (s. angehängte Beispiel logs eines Ablaufes).

Meine bisherigen -Propertiesdateien sehen folgendermaßen aus...
Datei der einen Anwendung trägt den namen _log4j.properties_

```
log4j.rootLogger=TRACE, MeinDaRoFiAppender

log4j.de.equens.sisu.swiftsplitting.SwiftSplitter         = TRACE
log4j.de.equens.sisu.xmlsplitting.XmlSplitter             = TRACE
log4j.de.equens.sisu.xmlsplitting.data.XmlSplitterHandler = TRACE
log4j.logger.net.sourceforge.wife.swift.SwiftParser2      = OFF
log4j.logger.net.sourceforge.wife                         = OFF

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern = %-5p %F:%L %M() %m %n 

log4j.appender.MeinDaRoFiAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.MeinDaRoFiAppender.datePattern='.'yyyy-MM-dd
log4j.appender.MeinDaRoFiAppender.file=logs/swiftsplitter.log
log4j.appender.MeinDaRoFiAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.MeinDaRoFiAppender.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c: %m%n


log4j.appender.LALA=org.apache.log4j.ConsoleAppender 
log4j.appender.LALA.layout=org.apache.log4j.PatternLayout 
log4j.appender.LALA.layout.ConversionPattern = %d{ISO8601} %-5p %F:%L %M() %m %n
```

Und Datei der anderen Anwendung hat den Namen _log4XmlSplit.properties_

```
log4j.rootLogger=TRACE, MeinDaRoFiAppender

log4j.de.equens.sisu.xmlsplitting.data.XmlSplitterHandler = TRACE
log4j.de.equens.sisu.xmlsplitting.XmlSplitter             = TRACE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern = %-5p %F:%L %M() %m %n 

log4j.appender.MeinDaRoFiAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.MeinDaRoFiAppender.datePattern='.'yyyy-MM-dd
log4j.appender.MeinDaRoFiAppender.file=logs/xmlsplitter.log
log4j.appender.MeinDaRoFiAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.MeinDaRoFiAppender.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c: %m%n


log4j.appender.LALA=org.apache.log4j.ConsoleAppender 
log4j.appender.LALA.layout=org.apache.log4j.PatternLayout 
log4j.appender.LALA.layout.ConversionPattern = %d{ISO8601} %-5p %F:%L %M() %m %n
```

Ursprünglich dachte ich man könne es auf diese Weise tun aber wie gesagt, ich bekomme eine Zuwammenwürfelung
Ich habe dazu im Netz gegoogelt und fand http://java2.5341.com/msg/32707.html.
Jedoch habe ich den Eindruck, dass dies nur für die verchiedenen Log-Level funktioniert.
Oder bleibt mir am Ende doch nicht ersparrt selbst einen Appender ähnlich wie in 
http://www.tutorials.de/forum/java/320124-dynamische-logfiles-mit-log4j.html vorgeschlagen zu schreiben? Ich selbst wüde natürlich eine reine Konfiguratione vorziehen.

Mit bestem Dank für Tips und Aufhellung meines Verständnisses


Takidoso


----------



## takidoso (11. August 2008)

nun habe ich das noch ein wenig weiter versucht und mir gedacht, veilleicht müsste ich die Appender ähnlich wie beim Root-Logger in der Konfiguration mit Komma getrennt nach dem Level schreiben. Das hat irgendwie nichts gebracht :-(
dann habe ich mal aus Spaß alles in ein log-File geschrieben in ähnlicher Form nun schreibt er mir gar nichts mehr raus  ich hat noch nicht einmal eine log-Datei geschrieben 
Also irgendwie ist dier Log4J-Logger unglaublich unintuitiv was die Konfiguration angeht, zumindest habe ich immernoch nicht verstanden wie eigetnlich ein Appender erfolgreich mit einem Logger assoziiert wird (mal abgesehen vom RootLogger). Und Beispiele so wie ich mir das dachte, finde ich leider auch keine. Andererseits den Hinweis im Kurzhandbuch das das geht, aber leider nicht genau wie 
Mein momentn letzter Versuch alles in einem Konfigurationsfile zu haben sieht so aus:

```
log4j.rootLogger=TRACE

log4j.de.equens.sisu.swiftsplitting.SwiftSplitter         = TRACE, SwiftSplitDaRoFiAppender
log4j.de.equens.sisu.xmlsplitting.XmlSplitter             = TRACE, SwiftSplitDaRoFiAppender
log4j.logger.net.sourceforge.wife.swift.SwiftParser2      = OFF
log4j.logger.net.sourceforge.wife                         = OFF

log4j.de.equens.sisu.xmlsplitting.data.XmlSplitterHandler = TRACE, XmlSplitDaRoFiAppender
log4j.de.equens.sisu.xmlsplitting.XmlSplitter             = TRACE, XmlSplitDaRoFiAppender


log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern = %-5p %F:%L %M() %m %n 

log4j.appender.SwiftSplitDaRoFiAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.SwiftSplitDaRoFiAppender.datePattern='.'yyyy-MM-dd
log4j.appender.SwiftSplitDaRoFiAppender.file=logs/swiftsplitter.log
log4j.appender.SwiftSplitDaRoFiAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.SwiftSplitDaRoFiAppender.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c: %m%n


log4j.appender.XmlSplitDaRoFiAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.XmlSplitDaRoFiAppender.datePattern='.'yyyy-MM-dd
log4j.appender.XmlSplitDaRoFiAppender.file=logs/xmlsplitter.log
log4j.appender.XmlSplitDaRoFiAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.XmlSplitDaRoFiAppender.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c: %m%n
```


----------



## takidoso (11. August 2008)

Ich habe  da nochmal in diesem Forum geschaut...
http://www.tutorials.de/forum/java/248885-log4j.html
Da hatte jemand offenbar das selbe Problem wie ich, doch keiner scheint da bisher Hinweise darauf zu haben, obgleich ich dachte, dass dies ein recht naheliegendes Anliegen sei.


----------

