Questions & Answers

SOLVED
Pierced
I'm new here

Server-Logging in bestimmte Dateien

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions

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

View solution in original post

0 Kudos
11 Replies
Peter_Jodeleit
Crownpeak employee

รœber log4j, MDC-Kontext-Informationen (Modul-Name, Projekt-ID) und entsprechende Logger sollte das mรถglich sein.

Peter
0 Kudos

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 Smiley Happy

0 Kudos
gockel
Crownpeak employee

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.

0 Kudos

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
0 Kudos

... bitte ein paar mehr Details Smiley Happy

Das trifft auf deine Anfrage aber auch zu Smiley Wink.

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

  1. das Logging soll auf dem FirstSpirit-Server erfolgen.
  2. das du eine allgemeine Lรถsung unabhรคngig von dem von Sebastian Gockel beschriebenen Ansatz haben mรถchtest.
Peter
gockel
Crownpeak employee
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).

0 Kudos

Danke erstmal fรผr die prompte Beantwortung (hat auch 2 Pluspunkte auf dem Konto gegeben Smiley Wink!)

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?

0 Kudos

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

0 Kudos

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.

Peter

Type a product name