Donnerstag, April 25, 2013

Logging mit NLOG

Nachdem ich seit einigen Jahren eine selbst entwickelte Log-Klasse verwendet hatte wurde es nun im Rahmen eines grösseren Projektes notwendig das Thema Logging zu erweitern. Anstatt meine eigene Klasse um die entsprechenden Funktionalitäten zu erweitern habe ich mich dazu entschlossen diese komplett gegen die NLog, eine .NET basierende Logging Komponente auszutauschen.
Das Projekt NLog (http://nlog-project.org/) bietet die Möglichkeit die Logs in Files, Datenbanken, über das Netzwerk oder z.B. per Mail zu verschicken.

Logging per Mail

Die Möglichkeit Mails aus der Applikation zu versenden, zum Beispiel im Fehlerfall hatte ich schon bisher genützt, aber auch diese bisher verwendete Klasse konnte durch NLog ersetzt werden. Um ein Mail zu verschicken muss zunächst in NLog.config ein entsprechender Eintrag target gemacht werden. Hier werden die Parameter für die Verbindung zum Mailserver festgelegt.


<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <targets>
    <target name="gmail" type="Mail"
            smtpServer="smtp.gmail.com"
            smtpPort="587"
            smtpAuthentication="Basic"
            smtpUsername="user@gmail.com"
            smtpPassword="password"
            enableSsl="true"
            from="emailaddress@gmail.com"
            to="recipient@example.com"
            cc="alice@example.com;bob@example.com;charlie@example.com"
          />
  </targets>

  <rules>
    <logger name="*" minlevel="Error" writeTo="gmail" />
  </rules>
</nlog>


Nun werden alle Log-Einträge mit dem Level Error an das zuvor definierte Ziel gmail geschickt. Der eigentliche Aufruf im Code selbst unterscheidet sich nicht von anderen Logging Aufrufen:


namespace MyNamespace
{
  public class MyClass
  {
    private static Logger logger = LogManager.GetCurrentClassLogger();

    logger.Error("This messeage will we sent by mail...");
  }
}



Mit wenigen Zeilen Code und einem entsprechenden Konfigurationsfile lassen sich durch den Einsatz von NLog zwei bestehende Klassen aus dem Code entfernen, Wartungsarbeiten entfallen und die notwendig gewordenen Erweiterungen mussten gar nicht erst selbst codiert werden. An dieser Stelle ein herzlicher Dank den Entwicklern von NLog !

Keine Kommentare: