Es gibt zwei Möglichkeiten, log4net zu konfigurieren und zu verwenden. Der erste ist, wenn ich meinen eigenen Appender und den zugehörigen Logger konfigurieren kann:
<!-- language: xml -->
<appender name="myLogAppender" type="log4net.Appender.RollingFileAppender" >
<file value="Logs\myLog.log" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level - %message%n" />
</layout>
</appender>
<logger name="myLog">
<level value="All"></level>
<appender-ref ref="myLogAppender" />
</logger>
Und wenn ich dann etwas in ein Protokoll schreiben möchte, kann ich Folgendes tun:
ILog log = LogManager.GetLogger("myLog");
log.Info("message");
Eine andere Möglichkeit, es zu verwenden, besteht darin, root so zu konfigurieren, dass es so detailliert ist, wie ich möchte:
<!-- language: xml -->
<root>
<level value="Error" />
<appender-ref ref="myLogAppender" />
</root>
Und in diesem Fall kann ich Nachrichten wie folgt protokollieren:
ILog log = LogManager.GetLogger(typeof(Bar));
log.Info("message");
Der zweite Ansatz bietet den Vorteil, dass Sie einige Nachrichten im laufenden Betrieb aktivieren oder deaktivieren können. Das Problem ist jedoch, dass ich in EPiServer CMS entwickle und es ein eigenes Protokollierungssystem hat, das log4net verwendet. Wenn ich die Informationsprotokollierung auf Stammebene aktiviere, werden viele Systemprotokolle geschrieben.
Wie benutzt man log4net? Jeder Teil eines Systems schreibt in seinen eigenen Logger oder alles wird in den Standardlogger geschrieben, und die Konfiguration entscheidet, was als nächstes zu tun ist.
this.GetType()
?Meine Antwort kommt vielleicht zu spät, aber ich denke, sie kann Neulingen helfen. Sie werden keine ausgeführten Protokolle sehen, es sei denn, die Änderungen werden wie folgt vorgenommen.
2 Dateien müssen geändert werden, wenn Sie Log4net implementieren.
In [ app.config ]:
Zunächst müssen Sie unter 'configSections' den folgenden Code hinzufügen.
Dann müssen Sie unter 'Konfigurationsblock' unter den folgenden Code schreiben. (Dieser Code wird gemäß meinen Anforderungen angepasst, funktioniert aber wie ein Zauber.)
Inside Calling Class :
In der Klasse, in der Sie dieses log4net verwenden möchten, müssen Sie den folgenden Code deklarieren.
Jetzt können Sie in derselben Klasse anrufen, wo immer Sie möchten. Im Folgenden finden Sie eine der Methoden, die Sie während der Ausführung von Vorgängen aufrufen können.
quelle
ILog
Instanzmitglied richtig machen? Ich habe die gleiche Frage hier ausführlicher gestellt , aber vielleicht kann ich Ihre Eingabe erhalten?Anstatt meine aufrufende Klasse zu benennen, habe ich Folgendes verwendet:
Auf diese Weise kann ich in jeder Klasse, die log4net verwendet, dieselbe Codezeile verwenden, ohne daran denken zu müssen, den Code beim Kopieren und Einfügen zu ändern. Alternativ könnte ich eine Protokollierungsklasse erstellen und jede andere Klasse von meiner Protokollierungsklasse erben lassen.
quelle
Nachteil des zweiten Ansatzes ist ein großes Repository mit erstellten Loggern. Diese Logger machen dasselbe, wenn root definiert ist und Klassenlogger nicht definiert sind. Das Standardszenario auf dem Produktionssystem verwendet nur wenige Logger, die einer Klassengruppe zugeordnet sind. Entschuldigung für mein Englisch.
quelle