Normalerweise gibt es eine Protokolldatei pro Anwendung (Prozess) - selten für Thread
und niemals Exception
. Manchmal ist diese Protokolldatei in verschiedene Protokollebenen unterteilt: Debug-Meldungen in einem Bucket, Informationen in einem anderen, Warnungen/Fehler in einem dritten. Dies macht es einfach, nach Fehlern zu suchen, indem nur die Warnung und die kritischere Datei betrachtet werden.
log4j verfügt über eine Konfigurationsdatei, in der Sie bestimmte Nachrichten mithilfe verschiedener Kriterien an bestimmte Dateien weiterleiten können. Hier ist ein Beispiel der log4j-Eigenschaftsdatei:
# default is WARN and above going to the appender "logfile" and STDOUT
log4j.rootLogger=WARN, logfile, stdout
# write to ui.log for a day and then move to .yyyy-MM-dd suffix
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=ui.log
log4j.appender.logfile.Append=true
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
# but we log information message from classes in the package com.mprew.be
log4j.logger.com.mprew.be=INFO
log4j und benutzerdefinierte Logger, schmücken jedes Mal mit einer Class
Namen, Priorität, Datum/Uhrzeit, etc .. Zum Beispiel:
# date time priority Class-name Log message
2012-03-26 00:55:39,545 [INFO] CmsClientTask Content is up-to-date
In der Regel werden Ausnahmen als mehrere Zeilen ausgegeben, sodass Sie den gesamten Stack-Trace abrufen können.
2012-03-26 01:55:35,777 [INFO] ExceptionInterceptor Reporting problem to customer
org.springframework.NoSuchRequestException: No request handling method
at com.ui.base.BaseController.invokeNamedHandler(BaseController.java:240)
at com.ui.base.BaseController.handleRequestInternal(BaseController.java:100)
at com.ui.base.CoreServices.handleRequest(CoreServicesController.java:147)
...
In unserem verteiltes System, wir Route alle Protokolle von allen System zu 2 Server, die ein debug, info, und Warnprotokolle schreiben. Zusammen mit dem Datum/der Uhrzeit, dem Klassennamen, der Priorität und der Nachricht haben die Protokollnachrichten auch den Hostnamen und ein bestimmtes Protokoll-Token, so dass wir problemlos Klassen von Problemen identifizieren können. Das Folgende ist in einer Zeile:
2012-03-26 00:00:00.045 UTC INFO FE8 TrayController TRAY_CLIENT_LOOKUP
message=created unknown client with partner STW9
Dann können wir leicht für bestimmte Probleme grep.
Hoffe, das hilft.
warum melden Sie sich an erster Stelle? – UmNyobe