Anmelden

NLog ist ein leistungsfähiges Open-Source Logging-Subsystem für NET-Applikationen. NLog zeichnet sich durch die vielfältige Formatierbarkeit und die weitreichenden Looging-Ziele aus.

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

   
Top

Wir arbeiten mit Software von http://www.campus21.de.

Verantwortlich für angezeigte Daten ist der Webdomain-Eigentümer laut Impressum.

Suche