2 Stimmen

Konfigurieren von log4net zum Schreiben in verschiedene Dateien je nach Log-Level

Ich bin dabei, log4net einzurichten und möchte Debug-Meldungen in die Datei "debug.log", Info-Meldungen in die Datei "info.log" und so weiter schreiben.

Zu diesem Zweck verwende ich verschiedene Appenders, wie z.B.:

<appender name="DebugLogger" type="log4net.Appender.RollingFileAppender">
   <file value="..\Logs\Debug.log" />
   <threshold value="DEBUG" />
   <appendToFile value="true" />
   <rollingStyle value="Size" />
   <maxSizeRollBackups value="10" />
   <maximumFileSize value="1MB" />
   <staticLogFileName value="true" />
   <layout type="log4net.Layout.PatternLayout">
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] -    %message%newline" />
   </layout>

und ähnliche für die Ebenen INFO, WARN und ERROR. Das funktioniert gut, scheint aber eine Menge zusätzlicher Arbeit zu sein, denn all diese Appenders unterscheiden sich nur durch den Schwellenwert (debug oder warn usw.) und den Dateinamen (debug.log oder warn.log usw.)

Gibt es einen besseren Weg, mein Ziel zu erreichen? Vielleicht so etwas wie die Deklaration von "Base Appenders" zuerst.

(nebenbei bemerkt - wenn das in log4net nicht möglich ist, aber in NLog, wäre ich auch dankbar, das zu wissen)

Gracias.

3voto

andreister Punkte 13323

Ok, das ist in log4net nicht möglich - ich wollte die Frage nur abschließen.

Ich habe mir allerdings NLog angesehen, und anscheinend ist es dort recht einfach (siehe $level Variable in der Konfiguration):

<?xml version="1.0" encoding="utf-8" ?>
<nlog>
   <variable name="logDirectory" value="${basedir}\..\Logs"/>
   <targets>
       <target name="file" type="File" fileName="${logDirectory}\${level}.log" />
   </targets>
   <rules>
       <logger name="*" minlevel="Debug" writeTo="file" />
   </rules>
</nlog>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X