Log4Net / C # - Deaktiviert die Standardprotokollierung
Ich verwende log4net in einem C # -Projekt. In der Produktionsumgebung möchte ich die gesamte Protokollierung deaktivieren. Wenn jedoch ein schwerwiegender Fehler auftritt, sollten alle vorherigen 512 Meldungen in einer Datei protokolliert werden. Ich habe dies erfolgreich konfiguriert funktioniert gut. Die Meldungen werden in einer Datei protokolliert, wenn ein schwerwiegender Fehler auftritt.
Wenn ich es jedoch in Visual Studio ausführe, werden alle Protokollmeldungen in das Ausgabefenster geschrieben, unabhängig davon, ob es sich um einen schwerwiegenden Fehler handelt oder nicht. (Ich kann diese Meldungen nicht sehen, wenn ich vom Windows Explorer aus arbeite. Meine Anwendung ist eine WinForm-Exe und es gibt kein Konsolenfenster, in dem die Ausgabe angezeigt wird.)
Gibt es eine Möglichkeit, diese Protokollierung zu deaktivieren? Ich benötige meine Protokolle nur in einer Datei, auch wenn ein schwerwiegender Fehler auftritt.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net debug="false">
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log.txt" />
<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>
</appender>
<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" >
<bufferSize value="512" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="FATAL"/>
</evaluator>
<appender-ref ref="RollingFileAppender" />
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="BufferingForwardingAppender" />
</root>
</log4net>
</configuration>
Und so konfiguriere ich es im statischen Initialisierer von Windows Forms.
static Window1()
{
Stream vStream = typeof(Window1).Assembly.GetManifestResourceStream("TestLogNet.log4net.config");
XmlConfigurator.Configure(vStream);
BasicConfigurator.Configure();
}
Und ich habe das Logger-Objekt im Konstruktor von WinForm initialisiert
logger = LogManager.GetLogger(typeof(Window1));
[Sprache - C #, .NET Framework - 3.5, Visual Studio 2008, log4net 1.2.10, Projekttyp - WinForms]