- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Server-Logging in bestimmte Dateien
Hallo,
wir haben mehrere Server-Module geschrieben, die teils sehr komplex sind, weswegen ein ausgefeiltes Logging notwendig erscheint.
Es reicht nicht aus, dass die Ausgaben allesamt im fs-server.log landen. Was fรผr uns schon hilfreich wรคre, wรคre ein konfigurierbares Logfile, in etwa mit Namen <moduleName>_<projekt>.
Gibt es eine Mรถglichkeit, das zu erreichen, und wenn ja, wie?
vielen Dank
- Labels:
-
Developers
- Tags:
- logging
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wir haben inzwischen einen weiteren Appender definiert und wie folgt in der fs-logging.conf konfiguriert:
# modules: ocm-modules
log4j.appender.ModuleAppender=org.apache.log4j.RollingFileAppender
#log4j.appender.ModuleAppender=de.espirit.firstspirit.server.logging.FSAppender
log4j.appender.ModuleAppender.File=log/modules/ocm-modules.log
log4j.appender.ModuleAppender.consoleLogging=false
log4j.appender.ModuleAppender.plainLogging=true
log4j.appender.ModuleAppender.datedLogging=true
log4j.appender.ModuleAppender.maxFileSize=2MB
log4j.appender.ModuleAppender.buffer=8192
log4j.appender.ModuleAppender.flushCycle=10
# configure thresholds specific to package names
log4j.logger.de.guj.ocm=DEBUG,ModuleAppender
log4j.logger.de.espirit.firstspirit.server.scheduler=INFO,ModuleAppender
Die zugehรถrige Log-Datei wird zwar erzeugt erzeugt (daher gehe ich davon aus, dass die Appender-Klasse gefunden wurde), aber sie bleibt komplett leer.
In der fs-server.log tauchen Eintrรคge wie dieser auf
INFO 16.03.2011 10:01:20.597 {pID=4563,uID=0,seID=465986} (de.guj.ocm.publish.scheduler.FinishPublishing): finished 0 queue entries with status 'deploying' and priority '2'
der unserer Meinung nach in die Log-Datei geschrieben werden sollte. Wo liegt der Konfigurations-Fehler?
[EDIT: gelรถst]
Wir hรคtten einfach mal ein layout fรผr den Appender setzen sollen. Mit diesen beiden zusรคtzlichen Zeilen klappt es wie geplant:
log4j.appender.ModuleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.ModuleAppender.layout.ConversionPattern=%p %t %c - %m%n
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
รber log4j, MDC-Kontext-Informationen (Modul-Name, Projekt-ID) und entsprechende Logger sollte das mรถglich sein.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Peter,
an welcher Stelle mรผsste eine log4j.xml รผbergeben werden? In den Classpath des Moduls?
Oder muss eine xml/properties-Datei im Server entsprechend angepasst werden? ... bitte ein paar mehr Details
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Je nachdem um welche Arten von Modulen es sich handelt, gibt es z.B. fรผr Services auch ein entsprechends Logverzeichnis, welches รผber das Environment zur Verfรผgung gestellt wird.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Danke fรผr die Antworten, aber leider sind jetzt mehr Fragen als vorher:
- Das Verzeichnis spielt eine untergeordnete Rolle (und wenn ich es setzen wollte: Dafรผr stellt ServerEnvironment keinen setter zur Verfรผgung)
- Ich mรถchte den Namen der Log-Datei selbst bestimmen - da kam Peters Ansatz am nรคchsten - konkrete Frage siehe oben... danke
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
... bitte ein paar mehr Details
Das trifft auf deine Anfrage aber auch zu .
Die Logging-Konfiguration erfolgt in "{fsroot}/conf/fs-logging.conf". Kann z.B. รผber die fs4webmon Anwendung konfiguriert werden oder auch direkt im Dateisystem des Servers. Werden Appender oder Filter benutzt, die nicht im Lieferumfang enthalten sind, mรผssen diese in das Klassenpfad des Servers aufgenommen werden (dazu muss der Server dann neugestartet werden).
Diese Lรถsung geht davon aus, das
- das Logging soll auf dem FirstSpirit-Server erfolgen.
- das du eine allgemeine Lรถsung unabhรคngig von dem von Sebastian Gockel beschriebenen Ansatz haben mรถchtest.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich mรถchte den Namen der Log-Datei selbst bestimmen
Das ist รผber das angesprochene FileSystem des #logDir im Environment problemlos mรถglich. Die Hoheit รผber die Dateien/Namen und deren Verwaltung in dem Verzeichnis obliegt dem Benutzer (z.B. der Serviceimplementierung).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Danke erstmal fรผr die prompte Beantwortung (hat auch 2 Pluspunkte auf dem Konto gegeben !)
Der FSAppender ist ja leider nicht dokumentiert... welche properties kann ich auf ihm setzen? Ist es beispielsweise mรถglich, hier auf eine projectId oder gar einen Projektnamen zuzugreifen?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wir haben inzwischen einen weiteren Appender definiert und wie folgt in der fs-logging.conf konfiguriert:
# modules: ocm-modules
log4j.appender.ModuleAppender=org.apache.log4j.RollingFileAppender
#log4j.appender.ModuleAppender=de.espirit.firstspirit.server.logging.FSAppender
log4j.appender.ModuleAppender.File=log/modules/ocm-modules.log
log4j.appender.ModuleAppender.consoleLogging=false
log4j.appender.ModuleAppender.plainLogging=true
log4j.appender.ModuleAppender.datedLogging=true
log4j.appender.ModuleAppender.maxFileSize=2MB
log4j.appender.ModuleAppender.buffer=8192
log4j.appender.ModuleAppender.flushCycle=10
# configure thresholds specific to package names
log4j.logger.de.guj.ocm=DEBUG,ModuleAppender
log4j.logger.de.espirit.firstspirit.server.scheduler=INFO,ModuleAppender
Die zugehรถrige Log-Datei wird zwar erzeugt erzeugt (daher gehe ich davon aus, dass die Appender-Klasse gefunden wurde), aber sie bleibt komplett leer.
In der fs-server.log tauchen Eintrรคge wie dieser auf
INFO 16.03.2011 10:01:20.597 {pID=4563,uID=0,seID=465986} (de.guj.ocm.publish.scheduler.FinishPublishing): finished 0 queue entries with status 'deploying' and priority '2'
der unserer Meinung nach in die Log-Datei geschrieben werden sollte. Wo liegt der Konfigurations-Fehler?
[EDIT: gelรถst]
Wir hรคtten einfach mal ein layout fรผr den Appender setzen sollen. Mit diesen beiden zusรคtzlichen Zeilen klappt es wie geplant:
log4j.appender.ModuleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.ModuleAppender.layout.ConversionPattern=%p %t %c - %m%n
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Der FSAppender kann dafรผr nicht verwendet werden, der ist speziell fรผr die Bedรผrfnisse von FirstSpirit zugeschnitten und fรผr deinen Anwendungsfall nicht geeignet.
Ich kann hier nur auf Dr. Google verweisen. Suchworte sind
- MDC - darรผber muss euer Code die Informationen setzen, die fรผr Filterung und Ausgabe benรถtigt werden, also Projekt- und Modulinformationen
- Filter - Um die Ausgaben verschiedener Module (also z.B. abhรคngig von gesetzter MDC-Information) an verschiedene Appender zu delegieren
[EDIT]
Die Antwort von Stefan Kloe wurde mir eben noch nicht angezeigt - eine Paketabhรคngiges Logging (statt ein Filter, der auf MDC-Informationen arbeitet) ist natรผrlich mรถglich, macht aber eventuell nicht das, was ihr wollt. Wenn z.B. ihr z.B. Methoden aus anderen Paketen aufruft, unde diese selber wieder loggen, kommen mit deiner Lรถsung diese Meldungen nicht in das "Modul-Logfile". Wenn ihr das aber garnicht wollt, dann reicht deine Lรถsung natรผrlich.

