Logging

Viper.NET verwendet Apache log4net als Log-Plattform. log4net wird über eine Konfigurationsdatei parametriert. Diese Datei kann zur Laufzeit verändert werden, Änderungen wirken sofort nach dem Speichern der Datei.

In log4net wird zwischen Logger und Appender unterschieden. Viper.NET schickt die Log-Nachrichten an einen Logger, der die Nachrichten an die für ihn konfigurierten Appender weiterleitet.

Standardmäßig verwendet Viper.NET RollingFileAppender und den eigens entwickelten GBufferAppender für die Anzeige von Log-Nachrichten in der Benutzeroberfläche.

RollingFileAppender

Der RollingFileAppender schreibt eine Log-Datei. Beim Erreichen bestimmter Kriterien (Größe oder Zeit) wird die bisherige Log-Datei archiviert und eine neue Log-Datei angelegt.

<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="D:/log/Viper_6.4.2.log" />
    <param name="AppendToFile" value="true" />
    <param name="MaxSizeRollBackups" value="10" />
    <!--param name="RollingStyle" value="Date" /-->
    <param name="RollingStyle" value="Size" />
    <param name="MaximumFileSize" value="10MB" />
    <param name="StaticLogFileName" value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d [%t] %-5p - %m%n" />
    </layout>
  </appender>

Insbesondere der Parameter File muss unter Umständen angepasst werden.

Alle Parameter sind in der offiziellen Dokumentation von Apache log4net beschrieben.

GBufferAppender

Der GBufferAppender behält die letzten Log-Nachrichten im Arbeitsspeicher, womit sie einfach in der Benutzeroberfläche dargestellt werden können. Der Log-Tab in Viper.NET zeigt alle konfigurierten GBufferAppender an.

Für die Analyse seltener Fehler kann ein GBufferAppender außerdem so konfiguriert werden, dass beim Auftreten bestimmter Log-Nachrichten automatisch ein Dump des Log-Buffers gespeichert wird.

<appender name="GAppenderRoot" type="Gefasoft.MAK.Logging.GBufferAppender">
  <param name="BufferSize" value="10000000"/>
  <param name="DumpFile" value="D:/log/Viper_6.4.2_Dump.log" />
  <param name="MaxSizeRollBackups" value="3" />
  <param name="MaxCharsToDisplay" value="100000"/>
  <param name="DisplayName" value="Main"/>
  <param name="SortId" value="1" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%t] %-5p - %m%n" />
  </layout>

  <AutoDumpSettings type="Gefasoft.MAK.Logging.GAppenderAutoDumpSettings">
    <param name="DumpFile" value="D:/log/Viper_6.4.2_AutoDump.log" />
    <param name="MaxSizeRollBackups" value="10" />
    <param name="DumpSize" value="1000000"/>
    <param name="TriggerPattern" value="regex:"/>
    <param name="LogLevel" value="OFF"/>
    <param name="AdditionalAppenderToAutodump" value ="" />
    >
  </AutoDumpSettings>
</appender>
  • BufferSize: Größe des Puffers für Log-Nachrichten in Bytes.

  • DumpFile: Über die Oberfläche kann ein „Dump“ des aktuellen Log-Puffers in diese Datei geschrieben werden.

  • MaxSizeRollbacks: Maximale Anzahl an Dump-Dateien.

  • MaxCharsToDisplay: Maximale Anzahl Zeichen, die im Viewer angezeigt werden sollen

  • DisplayName: Anzeigename des Loggers

  • SortId: Manuelle Sortierreihenfolge in der GUI.

  • layout: Formatierung der Log-Nachricht.

  • AutoDumpSettings - DumpFile: Datei für den AutoDump - MaxSizeRollbacks: Maximale Anzahl an AutoDump-Dateien. - DumpSize: Anzahl an Zeichen für den AutoDump. - TriggerPattern: Suchmuster für die Log-Nachricht, für die der AutoDump ausgelöst werden soll. Nach dem Prefix regex: kann optional ein regulärer Ausdruck angegeben werden. - LogLevel: TriggerPattern wird nur für Log-Nachrichten ab diesem Log-Level geprüft. - AdditionalAppenderToAutodump: Weitere GBufferAppender, für die der AutoDump ebenfalls ausgeführt werden soll.

Konfiguration Loglevel

In den globalen Einstellungen kann das Loglevel für alle Logger auf ein bestimmtes Level festgelegt werden. Wird der Menüpunkt „log4net.config“ ausgewählt, so wird für jeden Logger das entsprechende Level aus der log4net.config verwendet.

../_images/loglevel-config.png