Ta strona mówi
Rejestratorom można przypisać poziomy. Poziomy są instancjami klasy log4net.Core.Level. Następujące poziomy są definiowane w kolejności rosnącego priorytetu :
- WSZYSTKO
- ODPLUSKWIĆ
- INFO
- OSTRZEC
- BŁĄD
- FATALNY
- POZA
DEBUG wydaje się mieć najniższy priorytet, a ERROR jest wyższy.
Pytanie
- Jeśli ustawię przykład Min i Max DEBUG i ERROR, wypisze wszystko DEBUG, INFO, WARN i ERROR. Bez użycia filtra min i max. Jeśli określę ERROR (poziom logowania = ERROR) Czy będzie zawierać DEBUG, INFO i WARN
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
Zamiast filtra min i max. Czy jest możliwe skonfigurowanie poziomu i uwzględnienie wszystkich innych niższych poziomów do logowania?
Przykład - Ustaw poziom jako Błąd, który będzie zawierał DEBUG, INFO, WARN i ERROR. Czy jest to możliwe z log4net?
Publikowanie konfiguracji log4net na podstawie jednego z komentarzy:
<?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
? Myślę, że powinno to obejmować wszystko poniżej, jeśli nie określiszlevelMin
Odpowiedzi:
Może to pomóc w zrozumieniu, co jest rejestrowane na jakim poziomie Rejestratorom można przypisać poziomy. Poziomy są instancjami klasy log4net.Core.Level. Następujące poziomy są zdefiniowane w kolejności rosnącej wagi - Log Level.
Liczba poziomów zarejestrowanych dla każdego poziomu ustawień:
źródło
W przypadku większości zastosowań chciałbyś ustawić poziom minimalny, ale nie maksymalny.
Na przykład podczas debugowania kodu ustaw minimalny poziom na DEBUG, a podczas produkcji ustaw go na WARN.
źródło
<level value="ALL" />
na,<level value="WARN" />
a otrzymasz tylko ostrzeżenia i błędy.DEBUG pokaże wszystkie komunikaty, INFO wszystkie oprócz komunikatów DEBUG i tak dalej.
Zwykle używa się INFO lub WARN. Zależy to od polityki firmy.
źródło
Oto kod informujący o priorytetach wszystkich poziomów log4net:
źródło
Jak zauważyli inni, zwykle lepiej jest określić minimalny poziom rejestrowania, aby rejestrować ten poziom, a także inne, bardziej surowe. Wygląda na to, że myślisz o poziomach rejestrowania wstecz.
Jeśli jednak chcesz mieć bardziej szczegółową kontrolę nad rejestrowaniem poszczególnych poziomów, możesz powiedzieć log4net, aby rejestrował tylko jeden lub więcej określonych poziomów, używając następującej składni:
Lub wykluczyć określony poziom rejestrowania, dodając węzeł „odmów” do filtru.
Możesz ułożyć wiele filtrów razem, aby określić wiele poziomów. Na przykład, jeśli chcesz tylko poziomy WARN i FATAL. Jeśli żądane poziomy były następujące po sobie, bardziej odpowiedni jest LevelRangeFilter.
Dokument referencyjny: log4net.Filter.LevelMatchFilter
Jeśli inne odpowiedzi nie dały ci wystarczających informacji, miejmy nadzieję, że pomoże ci to uzyskać to, czego chcesz z log4net.
źródło
by adding a "deny" node to the filter
w jaki sposób?Prawdą jest, że oficjalna dokumentacja ( podręcznik Apache log4net ™ - wprowadzenie ) stwierdza, że istnieją następujące poziomy ...
... ale dziwnie, kiedy przeglądam zestaw log4net.dll, zapieczętowana klasa v1.2.15.0 log4net.Core.Level, widzę zdefiniowane następujące poziomy ...
Od dłuższego czasu używam TRACE w połączeniu z PostSharp OnBoundaryEntry i OnBoundaryExit. Zastanawiam się, dlaczego tych innych poziomów nie ma w dokumentacji. Co więcej, jaki jest prawdziwy priorytet na wszystkich tych poziomach?
źródło
Spróbuj w ten sposób, to zadziałało dla mnie
Rejestruje 3 typy błędów - błąd, informacje i ostrzeżenie
źródło