Diese Seite sagt
Loggern können Ebenen zugewiesen werden. Ebenen sind Instanzen der Klasse log4net.Core.Level. Die folgenden Ebenen werden in der Reihenfolge zunehmender Priorität definiert :
- ALLES
- DEBUGGEN
- DIE INFO
- WARNEN
- ERROR
- TÖDLICH
- AUS
DEBUG scheint die niedrigste Priorität zu haben und ERROR ist höher.
Frage
- Wenn ich das Min- und Max-Beispiel DEBUG und ERROR setze, werden alle DEBUG, INFO, WARN und ERROR gedruckt. Ohne Verwendung von Min- und Max-Filter. Wenn ich ERROR (Logging Level = ERROR) spezifiziere, enthält es DEBUG, INFO & WARN
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
Anstelle von Min- und Max-Filter. Ist es möglich, eine Ebene zu konfigurieren und alle anderen darunter liegenden Ebenen für die Protokollierung einzuschließen?
Beispiel - Pegel als Fehler einstellen, der DEBUG, INFO, WARN und ERROR enthält. Ist das mit log4net möglich?
Veröffentlichung der log4net-Konfiguration basierend auf einem der folgenden Kommentare:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections >
<log4net debug="true">
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<layout type="log4net.Layout.XMLLayout" /> -->
<param name="File" value="TestLog.log" />
<param name="AppendToFile" value="false" />
<layout type="log4net.Layout.PatternLayout">
<header type="log4net.Util.PatternString" value="[START LOG] %newline" />
<footer type="log4net.Util.PatternString" value="[END LOG] %newline" />
<conversionPattern value="%d [%t] %-5p - %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<logger name="log4NetExample">
<!-- <appender-ref ref="B" /> -->
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</logger>
</log4net>
levelMax
? Ich denke, dass das alles darunter enthalten sollte, wenn Sie nicht einlevelMin
Antworten:
Dies kann helfen, zu verstehen, was auf welcher Ebene aufgezeichnet wird. Loggern können Ebenen zugewiesen werden. Ebenen sind Instanzen der Klasse log4net.Core.Level. Die folgenden Ebenen werden in der Reihenfolge des zunehmenden Schweregrads definiert - Protokollstufe.
Anzahl der für jede Einstellungsstufe aufgezeichneten Ebenen:
quelle
Für die meisten Anwendungen möchten Sie eine minimale, aber keine maximale Stufe festlegen.
Wenn Sie beispielsweise Ihren Code debuggen, setzen Sie die Mindeststufe auf DEBUG und in der Produktion auf WARN.
quelle
<level value="ALL" />
in<level value="WARN" />
und Sie erhalten nur die Warnungen und Fehler.DEBUG zeigt alle Nachrichten an, INFO alle außer DEBUG-Nachrichten und so weiter.
Normalerweise verwendet man entweder INFO oder WARN. Dies hängt von der Unternehmensrichtlinie ab.
quelle
Hier ist ein Code, der die Priorität aller log4net-Ebenen angibt:
quelle
Wie andere angemerkt haben, ist es normalerweise vorzuziehen, eine Mindestprotokollierungsstufe anzugeben, um diese Stufe und alle anderen schwerwiegenderen als diese zu protokollieren. Es scheint, als würden Sie nur rückwärts über die Protokollierungsstufen nachdenken.
Wenn Sie jedoch eine genauere Kontrolle über die Protokollierung einzelner Ebenen wünschen, können Sie log4net anweisen, nur eine oder mehrere bestimmte Ebenen mithilfe der folgenden Syntax zu protokollieren:
Oder um eine bestimmte Protokollierungsstufe auszuschließen, indem Sie dem Filter einen "Verweigern" -Knoten hinzufügen.
Sie können mehrere Filter zusammen stapeln, um mehrere Ebenen anzugeben. Zum Beispiel, wenn Sie nur die Ebenen WARN und FATAL möchten. Wenn die gewünschten Ebenen aufeinanderfolgend waren, ist der LevelRangeFilter besser geeignet.
Referenzdokument: log4net.Filter.LevelMatchFilter
Wenn die anderen Antworten Ihnen nicht genügend Informationen gegeben haben, hilft Ihnen dies hoffentlich dabei, das zu erreichen, was Sie von log4net erwarten.
quelle
by adding a "deny" node to the filter
Wie?Die offizielle Dokumentation ( Apache log4net ™ Handbuch - Einführung ) besagt, dass es die folgenden Ebenen gibt ...
... aber seltsamerweise sehe ich beim Anzeigen der Assembly log4net.dll, v1.2.15.0 versiegelte Klasse log4net.Core.Level die folgenden definierten Ebenen ...
Ich benutze TRACE seit langer Zeit in Verbindung mit PostSharp OnBoundaryEntry und OnBoundaryExit. Ich frage mich, warum diese anderen Ebenen nicht in der Dokumentation enthalten sind. Was ist darüber hinaus die wahre Priorität all dieser Ebenen?
quelle
Versuchen Sie es so, es hat bei mir funktioniert
Dies protokolliert 3 Arten von Fehlern - Fehler, Informationen und Warnungen
quelle