Memo Logging An: ASYS-Administratoren Von: Stephan Meyer Thema: Logging – Auszug aus älterem Memo Datum: 28.05.2008 Inhalt 1. Logging.......................................................................................... 1 1. Logging Das Logging wurde auf log4j umgestellt. Dies ermöglicht eine deutlich bessere Skalierbarkeit und (für Citrix-Systeme) die Möglichkeit, für jeden Anwender eigene Log-Dateien erstellen zu lassen. Die Konfiguration der Log-Ausgaben wird in der Datei MbsAsysDE.prop (bzw. AsysBase.prop) vorgenommen. In der Auslieferungsversion sind 4 LogDateien (in log4j „Appender“ genannt) konfiguriert. Für die Kommunikation sind eigene .prop-Dateien mit eigenen „Appendern“ definiert. Das Debug-Logging (Datei „asys_debug.log“) ist sehr detailliert und dient der Fehlersuche: - log4j.appender.debug=org.apache.log4j.FileAppender - log4j.appender.debug.File=logs/asys_debug.log - log4j.appender.debug.Append=false - log4j.appender.debug.Threshold=DEBUG - log4j.appender.debug.layout=org.apache.log4j.PatternLayout - log4j.appender.debug.layout.ConversionPattern=%d [%t] %-5p %-50c %x - %m%n An diese Datei wird nicht angehängt (Append=false), d.h. beim Neustart des Programms wird sie neu angelegt. Das Ausgabeformat (ConversionPattern) beinhaltet Datum und Zeit (%d), den aktuellen Thread (%t), die Priorität (%-5p), die Kategorie (%-50c), den „nested diagnostic content“ wenn ein Fehler aufgetreten ist (%x) und die Log-Nachricht gefolgt von einem Zeilenumbruch. Die Modifizierer (-5 bzw. -50) legen fest bis zu welcher maximalen Länge mit Leerzeichen aufgefüllt wird, bzw. Teile der Zeichenkette nicht mit ausgegeben werden (%-50p). Ausgabebeispiel des Debug-Logging: 2004-05-05 15:57:19,022 [main] DEBUG de.condat.mbs.userview.MBSUserDataView ITU GmbH 2008 81956578 - <init> start, 1/3 Memo Logging fac=UserDataView, parent=Anzeige nach § 11 NachwV, ident=Deckblatt und AN, viewdef=Deckblatt und AN, xprops=null Das Info-Logging („asys_info.log“) ist weniger detailliert und wird fortgeschrieben (Append=true). Der Appender „DailyRollingFileAppender“ bewirkt, dass jeden Tag die Datei vom letzten Tag unter Berücksichtigung des „datePattern“ historisiert wird. log4j.appender.info=org.apache.log4j.DailyRollingFileAppender log4j.appender.info.File=logs/asys_info.log log4j.appender.info.Append=true log4j.appender.info.Threshold=INFO log4j.appender.info.datePattern='.'yyyy-MM-dd log4j.appender.info.layout=org.apache.log4j.PatternLayout log4j.appender.info.layout.ConversionPattern=%d %-5p %x - %m%n Ausgabebeispiel des Info-Logging: 2004-05-05 15:57:17,670 INFO - 30.04.2004 12:00 - ***** MBS - Version = 3.6.01 / Release Das Sql- und das Rule-Logging (asys_sql.log und asys_rule.log) werden nicht historisiert und haben ein vereinfachtes Ausgabeformat. log4j.appender.sql=org.apache.log4j.FileAppender log4j.appender.sql.File=logs/asys_sql.log log4j.appender.sql.Append=false log4j.appender.sql.Threshold=DEBUG log4j.appender.sql.layout=org.apache.log4j.PatternLayout log4j.appender.sql.layout.ConversionPattern=%d %x - %m%n log4j.appender.rule=org.apache.log4j.FileAppender log4j.appender.rule.File=logs/asys_rule.log log4j.appender.rule.Append=false log4j.appender.rule.Threshold=DEBUG log4j.appender.rule.layout=org.apache.log4j.PatternLayout log4j.appender.rule.layout.ConversionPattern=%d %x - %m%n ITU GmbH 2008 81956578 2/3 Memo Logging Log4j bietet die Möglichkeit die Log-Ausgaben auf Paket- bzw. Klassenebene einzuschränken und zu erweitern. Wenn beispielsweise ein Problem in einem bestimmten Bereich des Programms auftritt, lässt sich gezielt für die relevanten Klassen eine sehr detaillierte Log-Ausgabe einstellen, das Suchen und Filtern nach relevanten Informationen in sehr großen Datenmengen entfällt somit. In der Auslieferungsversion sind die Ausgaben auf das wesentliche beschränkt. Der Sql- und der Rule-Logger sind selbstdefinierte Kategorien und schreiben außer in die Debug-Log-Datei zusätzlich jeweils in die SQL-Log-Datei und die Rule-Log-Datei. log4j.logger.de.condat.base=INFO log4j.logger.de.condat.baserep=INFO log4j.logger.de.condat.ddo=INFO log4j.logger.de.condat.tools=INFO log4j.logger.de.condat.mbs=INFO log4j.logger.Sql-Logger=DEBUG, sql log4j.logger.Rule-Logger=DEBUG, rule Insbesondere für Citrix-Anwender interessant ist die Möglichkeit, für jeden Asys-Benutzer eine eigene Log-Konfiguration anzulegen. Dafür muss eine Datei „MbsLog_[Loginname].prop“ z.B. „MbsLog_SMeyer.prop“ erzeugt werden mit den neuen Einstellungen für den jeweiligen Nutzer. Die BasisKonfiguration aus der Datei „MbsAsysDE.prop“ bleibt dabei erhalten, solange sie nicht durch abweichende Einstellungen in der benutzerspezifischen Datei überschrieben wird. Beispielsweise könnte für einen Benutzer SMeyer eine eigene Sql-Logdatei mit dem Namen „asys_sql_SMeyer.log“ angelegt werden, die historisiert und nicht überschrieben wird: log4j.appender.sql=org.apache.log4j.DailyRollingFileAppender log4j.appender.sql.File=logs/asys_sql_SMeyer.log log4j.appender.sql.Append=true log4j.appender.sql.Threshold=DEBUG log4j.appender.info.datePattern='.'yyyy-MM-dd log4j.appender.sql.layout=org.apache.log4j.PatternLayout log4j.appender.sql.layout.ConversionPattern=%d %x - %m%n Weitere ausführlichere Informationen über das log4j können bei Interesse dem beiliegenden Dokument „log4jmanual.pdf“ entnommen werden. ITU GmbH 2008 81956578 3/3