B2B-Logging
Das Logging der B2B basiert auf Log4j.
Globale Logging-Konfiguration
Die Konfiguration des B2B-Loggings kann über einige GlobalProperties vorgenommen werden.
GlobalProperty | Beschreibung | Werte |
---|---|---|
B3P_LOG4J_LEVEL | Ermöglicht die Konfiguration des Loglevels. Ist kein Wert gesetzt, so wird als Default WARN verwendet. | ALL, TRACE, DEBUG, INFO, WARN (default), ERROR, FATAL, OFF |
B3P_LOG4J_BASE_DIR | Pfad-Angabe, in welchem Verzeichnis die Logs geschrieben werden. In der Regel wird “tomcat_all/logs” verwendet. | |
B3P_LOG4J_OFFSET | Wird in Kombination mit dem Serverknoten als Name des Loggers verwendet. Daraus folgt auch der Name der Log-Datei. Bei einem Offset von 40000 wird beispielweise für Knoten 1 die Log-Datei B2BBP_40001.log erzeugt. | 40000 |
B3P_LOG4J_ConsoleAppender | Der ConsoleAppender hängt Log-Ausgaben an die Datenströme System.out (Standard) und System.err an und verwendet dabei das angegebene Layout. | %d{ABSOLUTE} %-4r [%t] %-5p %c - %m%n |
B3P_LOG4J_USE_ConsoleAppender | Der ConsoleAppender muss aktiviert werden. | true, false (Default: false) |
B3P_LOG4J_RollingFileAppender | Der RollingFileAppender schreibt Log-Ausgaben in rollierende Dateien. Die Konfiguration enthält 3 Werte, die durch Semikolon getrennt sind: Die maximale Dateigröße der Log-Dateien, die Anzahl der Log-Dateien und das Log-Layout. Suffixe für die Dateigröße sind KB, MB oder GB. | 5000KB;5;%d %-5p %C{2} %x %m%n |
B3P_LOG4J_SUPPRESS_URLS | Unterdrückt URLs beim Logging in den B2B-Logs. Dadurch werden auch Benutzerdaten vom Loginversuch unterdrückt. | true, false (Default: true) |
B3P_LOG4J_REDIRECT_STDERR | Leitet die Stderr-Ausgaben in eine separate B2B-Log-Datei um. | true, false (Default: false) |
B3P_LOG4J_REDIRECT_STDOUT | Leitet die Stdout-Ausgaben in eine separate B2B-Log-Datei um. | true, false (Default: false) |
Log-Layout
Das Layout der Log-Ausgaben kann über Standard-Log4j-Patterns konfiguriert werden. Die Standard-mäßig verwendeten Spezifikationssymbole sind im folgenden beschrieben. Log4j bietet darüber hinaus noch weitere Spezifikationssymbole, die allerdings nicht alle hier beschrieben werden. Die Spezifikationssymbole können durch normale Text-Elemente, wie z.B. Klammern, “-“ etc. ergänzt werden.
Das Layout %d %-5p %C{2} %x %m%n erzeugt Log-Ausgaben der folgenden Form:
2017-10-27 13:58:38,425 DEBUG xyz.BeispielKlasse Dies ist der Beispieltext einer Log-Ausgabe.
Spezifikationssymbol | Beschreibung |
---|---|
%c | Wird verwendet, um den Kategorienamen auszugeben. |
%C | Wird verwendet, um den vollqualifizierten Klassennamen auszugeben. In geschweiften Klammern kann zusätzlich die Genauigkeit angegeben werden, dabei wird dann nur die entsprechende Anzahl der Klassennamen-Teile von rechts ausgegeben. Zum Beispiel bei einem Klassennamen “org.b2bbp.xyz.BeispielKlasse” erzeugt das Pattern %C{2} die Augabe “xyz.BeispielKlasse”. |
%d | Wird verwendet um den Zeitstempel des Log-Eintrags auszugeben. Es kann zusätzlich ein Datumsformat in geschweiften Klammern angegeben werden, z.B. %d{HH:mm:ss,SSS}. Wird kein spezielles Datumsformat angegeben, so wird das ISO8601-Format (yyyy-MM-dd HH:mm:ss,SSS) verwendet. Es wird empfohlen, die Log4j-Datumsformate zu verwenden. Dies sind die Werte ABSOLUTE (HH:mm:ss,SSS), DATE (dd MMM yyyy HH:mm:ss,SSS) und ISO8601 (yyyy-MM-dd HH:mm:ss,SSS). |
%m | Wird verwendet, um die eigentliche Meldung auszugeben |
%n | Wird verwendet, um einen Zeilenumbruch auszugeben. Der Line-Separator ist Plattformabhängig. |
%-5p | %p gibt das Log-Level an. Das “-“ gibt eine linksbündige Ausgabe an. Die 5 bedeutet, dass die Ausgabe auf 5 Zeichen verlängert wird. Dadurch stehen Ausgaben für z.B. “INFO” und “DEBUG” bündig untereinander. |
%-4r | %r wird verwendet, um die Anzahl der Millisekunden seit Start der Anwendung auszugeben. -4 erzeugt eine linksbündige Ausgabe, die auf 4 Zeichen verlängert wird. |
%x | Wird verwendet, um den NDC (Nested Diagnostic Context) auszugeben |
%t | Wird verwendet, um den Threadnamen auszugeben. |
Klassen Loglevel
Das Loglevel kann für jede Klasse einzeln gesetzt werden. Hierfür ist folgende Extension anzulegen:
LOG_LEVELS
(mit leerem Provider und leerer Version)
Für jede Klasse ist eine Zeile mit dem voll qualifizierten Klassennamen (einschließlich Package) anzugeben:
"vollst. Klassenname"="Loglevel"
Beispiel: org.b2bbp.engine.util.Log4jUtils=INFO
Als Loglevel können die gleichen Werte wie beim globalen Loglevel angegeben werden. Alle Klassen, für die kein eigenes Loglevel gesetzt ist, erhalten das globale Loglevel.
Tomcat-Logging
Dieser Teil der Dokumentation erklärt, wie Sie das Log-Verhalten eines Tomcat auf log4j umstellen. Damit lässt sich einstellen, analog wie beim B2B-Logging, dass die log-Dateien “rollen”, also bei einer gewissen Dateigröße eine neue Datei angelegt wird und nach einer gewissen Anzahl von Dateien die älteste gelöscht wird. Dies spart Speicherplatz und verhindert das unbegrenzte Wachsen der Logdateien. Grundlage für diese Dokumentation war:
http://tomcat.apache.org/tomcat-7.0-doc/logging.html#Using_Log4j
Schritte zur Einrichtung
Die Verzeichnisse $CATALINA_BASE und $CATALINA_HOME finden sie in den Java-Einstellungen Ihres Tomcats. Standard ist in beiden Fällen das Verzeichnis des Tomcat selbst.
- Erstelle eine Datei mit Namen log4j.properties mit dem Inhalt aus Kapitel 2 und speichere sie in $CATALINA_BASE/lib.
- Download von tomcat-juli.jar und tomcat-juli-adapters.jar http://mirror.dkd.de/apache/tomcat/tomcat-7/v7.0.82/bin/extras/
- Kopiere tomcat-juli-adapters.jar nach $CATALINA_HOME/lib.
- Kopiere log4j-1.x.x.jar von $CATALINA_HOME/webapps/b2bbp-engine/WEB-INF/lib nach $CATALINA_HOME/lib.
- Ersetze $CATALINA_HOME/bin/tomcat-juli.jar mit tomcat-juli.jar von oben.
- Lösche $CATALINA_BASE/conf/logging.properties
- Entferne Logging-Einstellungen am Tomcat:
- Tomcat neustarten
logging.properties
Folgendes sollte als logging.properties benutzt werden.
log4j.rootLogger = INFO, CATALINA
log4j.appender.CATALINA = org.apache.log4j.RollingFileAppender
log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina.log
log4j.appender.CATALINA.Append = true
log4j.appender.CATALINA.Encoding = UTF-8
log4j.appender.CATALINA.MaxFileSize = 1000KB
log4j.appender.CATALINA.MaxBackupIndex=5
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.LOCALHOST = org.apache.log4j.RollingFileAppender
log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost.log
log4j.appender.LOCALHOST.Append = true
log4j.appender.LOCALHOST.Encoding = UTF-8
log4j.appender.LOCALHOST.MaxFileSize = 1000KB
log4j.appender.LOCALHOST.MaxBackupIndex=5
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.MANAGER = org.apache.log4j.RollingFileAppender
log4j.appender.MANAGER.File = ${catalina.base}/logs/manager.log
log4j.appender.MANAGER.Append = true
log4j.appender.MANAGER.Encoding = UTF-8
log4j.appender.MANAGER.MaxFileSize = 1000KB
log4j.appender.MANAGER.MaxBackupIndex=5
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.HOST-MANAGER = org.apache.log4j.RollingFileAppender
log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager.log
log4j.appender.HOST-MANAGER.Append = true
log4j.appender.HOST-MANAGER.Encoding = UTF-8
log4j.appender.HOST-MANAGER.MaxFileSize = 1000KB
log4j.appender.HOST-MANAGER.MaxBackupIndex=5
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding = UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] = INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] = INFO, HOST-MANAGER
Umleiten der Standardaussteuerung (STDOUT und STDERR) des Tomcats in rollierende Log4J-Logs über die B2B
Über die folgenden GlobalProperties ist es möglich die Standard-Log-Ausgaben des Tomcats in entsprechende Knotenabhängige Log-Files umzuleiten:
- B3P_LOG4J_REDIRECT_STDOUT
- B3P_LOG4J_REDIRECT_STDERR
Wurden beide auf true gesetzt, so werden pro Knoten zwei weitere Log-Dateien erstellt:
View Me Edit Me