NLog Log-Levels
In NLog gibt es 6 sogenannte Log-Levels. Durch das LogLevel wird die Wichtigkeit einer Nachricht bestimmt und es wird ermöglicht, die Logausgabe in ihrere Detailliertheit zu steuern.
Log-Level | Bedeutung, Verwendung |
---|---|
Trace | Hier werden alle verfügbaren Log-informationen über Funktionsausfrufe. |
Debug | Hier werden detaillierte Informationen der internen Transaktionen ausgegeben (z.B. SQL-Operationen) |
Info | Hier werden zusammenfassende Informationen über internen Transaktionen ausgegeben. |
Warn | Hier sollt man mal hinschauen. Das System arbeitet normal, es liegt ein erwartetes Problem vor (Falscheingabe durch Nutzer im Server abgefangen) |
Error | Das System arbeitet normal. Es ist aber ein unerwartetes Problem eingetreten (Subsystem nicht verfügbar, Dateisystemberechtigungen) |
Fatal | Das System arbeitet unnormal. |
Ein Target wird mit einem bestimmten Log-Level konfiguriert. Diese Target gibt dieses und alle höheren Log-Levels aus
NLog Log-Targets
Die Targets sind die Ziele für die Ausgabe von Logging-Informationen. In der folgenden Tabelle sind die Targets datgestellt, die wir standardmäßig für unsere Produkte verwenden:
Target | Erläuterung |
---|---|
File | Daten werden in eine Datei geschrieben. Bei Verwendung dieses Targets in Webapplikationen muss darauf geachten werden, dass der Webserver Schreibrechte auf die in NLog.config eingestellten Pfade. Hier bietet sich an die Logdateien im TMP-Verzeichnis des Servers abzulegen. |
Console | Daten werden auf den Standardausgabe des Prozesses geschrieben (Systemkonsole). Das Console-Target ist sinnvoll für den interaktiven Test von Systemprozessen. Bei Verwendung in Hintergrundprozessen kann man die Ausgabe in Dateien umleiten. Die Verwendung dieses Targets in Webapplikationen ist nicht sinnvoll. |
Network | Daten werden per UDP zu einem anderen Server gesendet. Mit diesem Target kann man den Betrieb einer Webapplikation oder von Hintergrundprozessen Live auf dem selben oder einem anderen System verfolgen. Dazu benötigt man aber einen geeigneten Empfängerprozess. Wir bieten dafür das Kommandozeilenprogramm Nsoft.Tools.UdpLogger.exe an. |
Darüber hinaus gibt es weitere Target (z.B. Datenbank, E-Mail). Softwarebetreiber können diese Targets durch Bearbeitung der Datei NLog.config und Schaffung der Target-seitigen Voraussetzungen eigenständig aktivieren.
NLog.config (Beispiel)
< ?xml version="1.0" ?>
< nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
< targets>
< target name="trace" xsi:type="File"
fileName="${basedir}/trace.log"
layout="${longdate} ${logger} ${level:upperCase=true} ${message}" />
< target name="error" xsi:type="File"
fileName="${basedir}/error.log"
layout="${longdate} ${logger} ${level:upperCase=true} ${message}" />
< target name="error" xsi:type="File"
fileName="${basedir}/info.log"
layout="${longdate} ${logger} ${level:upperCase=true} ${message}" />
< target name="network" xsi:type="Network"
address="udp://localhost:4000"
layout="${logger} ${level:upperCase=true} ${message}${newline}" />
< target name="console" xsi:type="Console" layout="${message}" />
< target name="Nsoft.Sys.Jobs.DataCleanupJob" xsi:type="File"
fileName="${basedir}/Nsoft.Sys.Jobs.DataCleanupJob.txt"
layout="${longdate} ${level:upperCase=true} ${message}" />
< target name="Nsoft.Sys.Jobs.DeleteReportFilesJob" xsi:type="File"
fileName="${basedir}/Nsoft.Sys.Jobs.DeleteReportFilesJob.txt"
layout="${longdate} ${level:upperCase=true} ${message}" />
< target name="Nsoft.Sys.Jobs.PostBuilderJob" xsi:type="File"
fileName="${basedir}/Nsoft.Sys.Jobs.PostBuilderJob.txt"
layout="${longdate} ${level:upperCase=true} ${message}" />
< target name="Nsoft.Sys.Jobs.PostSenderJob" xsi:type="File"
fileName="${basedir}/Nsoft.Sys.Jobs.PostSenderJob.txt"
layout="${longdate} ${level:upperCase=true} ${message}" />
< /targets>
< rules>
< logger name="*" minlevel="Trace" writeTo="trace,network" />
< logger name="*" minlevel="Error" writeTo="error" />
< logger name="*" minlevel="Info" writeTo="info" />
< logger
name="Nsoft.Sys.Jobs.DataCleanupJob"
minlevel="Debug"
writeTo="Nsoft.Sys.Jobs.DataCleanupJob" />
< logger
name="Nsoft.Sys.Jobs.DeleteReportFilesJob"
minlevel="Debug"
writeTo="Nsoft.Sys.Jobs.DeleteReportFilesJob" />
< logger
name="Nsoft.Sys.Jobs.PostBuilderJob"
minlevel="Debug"
writeTo="Nsoft.Sys.Jobs.PostBuilderJob" />
< logger
name="Nsoft.Sys.Jobs.PostSenderJob"
minlevel="Debug"
writeTo="Nsoft.Sys.Jobs.PostSenderJob" />
< /rules>
< /nlog>
Archivieren und Löschen von Log-Dateien
Tageweise Archivierung ~/cron_2359
Ermittlung des aktuellen Datums (SQL-Schreibweise) und Umbenennung der *.log-Dateien in dieses Datum. Der Job muss am Ende des Tages laufen, damit das ermittelte Datum dem Dateiinhalt entspricht. Erstellung eines Shellscript:
vi ~/cron_2359
Shellscript enthält eine Schleife mit Umbenennung: die Dateiendung .log wird ersetzt durch Datum. Damit werden umbenannte Dateien nicht erneut verarbeitet (könnten aber auch in anderes Verzeichnis bewegt werden, um Endung .log zu erhalten):
cd /home/log/his_jobs
DATE=`date +%Y-%m-%d`
for file in *.log; do mv "$file" "${file/.log/.$DATE}"; done
Shellscript muss mur x-Rechten versehen werden:
chmod 744 ~/cron*
und in crontab eingetragen werden:
59 23 * * * .../cron_2359
In der Verfahrensweise entsteht immer ein kleiner Fehler, indem Log-Einträge ab 23:59 im Folgetag landen. Der Job müsste exakt 00:00 laufen und Vortagsdatum ermitteln (läßt sich bestimmt irgenwie verfeinern, jedoch nicht 100%-tig lösen).
Löschen älterer Dateien
Ermittlung der Dateien im aktuellen Verzeichnis, die älter als 10 Tage (letzter Schreibzugriff) sind:
find . -mtime +10 -exec ls {} \;
Löschen der Dateien im aktuellen Verzeichnis, die älter als 10 Tage (letzter Schreibzugriff) sind:
find . -mtime +10 -exec rm {} \;
Anzeige des im aktuellen Verzeichnis belegten Speicherplatzes (MB)
du -k
Wir arbeiten mit Software von http://www.campus21.de.
Verantwortlich für angezeigte Daten ist der Webdomain-Eigentümer laut Impressum.