Protokollierung über Log4Net

Verschiedene Module der inoxision ENTERPRISEsuite und der ARCHIVEmail Produkte (z.B. MailConnect, Webclient ...) verwenden die Log4Net-Bibliothek zur Protokollierung von Arbeitsabläufen sowie Fehlern.

In der Standardkonfiguration erfolgt die Auswertung der Protokollierung mit Hilfe des ARCHIVEmanagers. Hier gibt es ein "Logging"-Plugin da zunächst aktiviert werden muss. Nach der Aktivierung beginnt das Plugin mit der Aufzeichnung der Meldungen. Die Meldungen selbst können dann im Log Viewer (YALV) betrachtet werden.

Damit die Aufzeichnung auch Meldungen empfangen kann, müssen die jeweiligen Programm-Module so konfiguriert werden dass sie ihre Meldungen an das Plugin senden. Sie erkennen die Log4Net-Unterstützung an den Dateien mit der Endung ".log4net" in den jeweiligen Programmverzeichnissen. Jede dieser Dateien gehört zu einem dedizierten Programm mit gleichem Namen. So lautet die Konfigurationsdatei z.B. für den MailConnect-SMTP-Dienst "inoxisionSMTPServer.exe.log4net" und die zugehörige EXE-Datei "inoxisionSMTPServer.exe".

In der Konfigurationsdatei werden sogenannte "Appender" konfiguriert. Diese bestimmen welche Informationen an welche Datenaufzeichnung gesendet werden sollen.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <appender name="UdpAppender" type="log4net.Appender.UdpAppender">
      <remoteAddress value="127.0.0.1" />
      <remotePort value="11000" />
      <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
        <locationInfo value="true"/>
      </layout>
    </appender>
    <root>
      <appender-ref ref="UdpAppender" />
      <level value="INFO" />
    </root>
  </log4net>
</configuration>

Dies ist die Standard-Konfiguration des SMTP-Dienstes. Wichtig sind hier die "remoteAddress" und das "level". Erstes beschreibt die Zieladresse der Aufzeichnungsquelle. Wenn Sie das Loggin-Plugin nicht auf demselben Rechner ausführen, müssen Sie hier die Adresse auf die Managers ändern. Anschließend muss der Dienst neu gestartet werden.

Das Level gibt an welche Informationen aufgezeichnet werden sollen. Hier gibt es verschiedene Stufen, u.a. ERROR, WARN, INFO sowie DEBUG. Letztere sollte mit Bedacht eingesetzt werden und ist nur zur Fehlersuche gedacht. Sie sollte nicht im Produktbetrieb verwendet werden da unter Umständen mehr Rechenzeit mit der Protokollierung als mit der eigentlichen Verarbeitung verbraucht wird.

Bei obigen "Appender" handelt es sich um einen UdpAppender. Dieser sendet alle Nachrichten über Netzwerk-Protokoll UDP an die "remoteAddress".

Es können aber noch weitere "Appender" definiert werden. ARCHIVEmail CORE verwendet z.B. einen RollOver-FileAppender. Hierbei werden alle Nachrichten in das Dateisystem geschrieben. Damit die einzelnen Protokolldateien nicht zu groß werden, wird automatisch nach einer bestimmten Dateigröße (oder Datum) eine neue Datei begonnen.

Das folgende Beispiel erweitert die obige Konfiguration um einen solchen Appender. Dieser wird jeden Tag eine neue Protokoll-Datei in das Verzeichnis der Umgebungsvariable %TEMP% schreiben. 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <appender name="UdpAppender" type="log4net.Appender.UdpAppender">
      <remoteAddress value="127.0.0.1" />
      <remotePort value="11000" />
      <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
        <locationInfo value="true"/>
      </layout>
    </appender>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="${TMP}\log-file.txt" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <root>
      <appender-ref ref="UdpAppender" />
      <appender-ref ref="RollingFileAppender" />
      <level value="INFO" />
    </root>
   </log4net>
</configuration>

Weitere Beispiel für Appender und ihre Verwendungen finden Sie in der offiziellen Log4Net-Dokumentation unter https://logging.apache.org/log4net/release/config-examples.html. Dort wird z.B. auch erklärt wie man die Protokolle in eine Datenbank schreiben kann oder auch wie man bei Fehlern eine automatische E-Mail-Benachrichtigung erhält.

Man kann auch eine Protokollierung über das Windows-Ereignisprotokoll vornehmen. Nachfolgend ein Beispiel für das Protollierungslevel "WARN" (nur Warnungen und Fehler):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <appender name="UdpAppender" type="log4net.Appender.UdpAppender">
      <remoteAddress value="127.0.0.1" />
      <remotePort value="11000" />
      <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
        <locationInfo value="true"/>
      </layout>
    </appender>
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
      <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <root>
      <appender-ref ref="UdpAppender" />
      <appender-ref ref="EventLogAppender" />
      <level value="WARN" />
    </root>
  </log4net>
</configuration>

Der Webclient verwendet auch eine Log4Net-kompatible Protokollierung. Die Einstellungen befinden sich hier in der "settings.ini". Im nachfolgenden Beispiel ist die externe Protokollierung über UDP aktiviert (enabled=1). Das Ziel ist die Adresse 127.0.0.1 was hier die lokale Rechner ist. Sowohl der UDP-Appender als auch die integrierte Datei-Protokollierung nutzen das Level "info".

[Logging]
enabled=1
server=127.0.0.1
ServerMode=info
ConsoleMode=info

 

Artikeldetails

Artikel-ID:
179
Kategorie:
Datum (erstellt):
2017-07-05 14:50:09
Aufrufe:
2,116