Szukaj…


Wprowadzenie

Log4net to system rejestrowania awaryjnego. Fail stop oznacza, że przestaje rejestrować wewnętrzny wyjątek i zgodnie z projektem nie wchodzi w interakcje z przepływem programu. Wiedząc o tym, rozwiązywanie problemów z log4net nie jest takie łatwe. Jeśli logowanie się nie powiedzie, twój program nie zauważy. Widzisz wiele pytań na temat: dlaczego moje logowanie do log4net nie działa? W tym artykule wyjaśniono podstawowe rozwiązywanie problemów i najczęściej stosowane rozwiązania.

W większości przypadków pierwszym krokiem jest włączenie wewnętrznego debugowania dla log4net.

Włącz wewnętrzne debugowanie

Istnieją dwa sposoby włączenia wewnętrznego debugowania w log4net:

  • Określ opcję log4net.Internal.Debug w pliku konfiguracyjnym aplikacji
  • Programowo włącz wewnętrzny debugowanie log4net

Określ opcję log4net.Internal.Debug w pliku konfiguracyjnym aplikacji

Jest to preferowana metoda włączenia wewnętrznego debugowania, dodaj klucz log4net.Internal.Debug do pliku app.config twojej aplikacji.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

Rejestrowanie debugowania rozpocznie się natychmiast po uruchomieniu aplikacji.

Programowo włącz wewnętrzny debugowanie log4net

Drugi sposób to zrobić programowo. Ustaw właściwość log4net.Util.LogLog.InternalDebugging na true:

log4net.Util.LogLog.InternalDebugging = true;

Dane wyjściowe wewnętrznego dziennika debugowania

Wewnętrzne komunikaty debugowania są zapisywane w konsoli i w System.Diagnostics.Trace. Gdy musisz konsolować dane wyjściowe, możesz przekierować System.Console.Out. Lub możesz przekierować komunikat śledzenia do pliku:

<configuration>
...

<system.diagnostics>
    <trace autoflush="true">
        <listeners>
            <add 
                name="textWriterTraceListener" 
                type="System.Diagnostics.TextWriterTraceListener" 
                initializeData="C:\tmp\log4net.txt" />
        </listeners>
    </trace>
</system.diagnostics>

...
</configuration>

Buforowane dołączające

Niektóre programy dołączające log4net są aplikacjami buforowanymi. Ci dołączający będą się logować tylko wtedy, gdy zarejestrowana zostanie pewna liczba wiadomości. Niektóre próbki to SmtpAppender, RemotingAppender lub AdoNetAppender. Ci dołączający mają ustawienie BufferSize:

<bufferSize value="100" />

Oznacza to, że logger zarejestruje się, gdy w buforze znajdzie się 100 wiadomości. Gdy chcesz przetestować moduł dołączający, możesz ustawić rozmiar bufora na 1.

Jeśli jesteś co bufor, który ma być opróżniony na błąd, możesz użyć ewaluatora:

<evaluator type="log4net.Core.LevelEvaluator">
     <threshold value="ERROR"/>
</evaluator>

Jeśli warunek oceniającego jest spełniony, bufor zostanie opróżniony.

Configure () nie wywoływany lub wywoływany wiele razy

Jeśli nie widzisz rejestrowania, możesz sprawdzić, czy w aplikacji jest wywoływane narzędzie Configure() . Najprostszym sposobem jest dodanie go jako atrybutu do zestawu:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

Następnie nie musisz dodawać log4net.Config.XmlConfigurator.Configure() dowolnym miejscu w konfiguracji. Lub możesz dodać log4net.Config.XmlConfigurator.Configure() w jednej ze swoich metod uruchamiania. Upewnij się, że wywołujesz konfigurację tylko raz.

Program dołączający pliki nie pisze

Jeśli masz program dołączający pliki, upewnij się, że piszesz w lokalizacji, w której użytkownik może tworzyć i aktualizować pliki. Jeśli nie, rejestracja się nie powiedzie. Możesz to sprawdzić, gdy masz włączone wewnętrzne debugowanie.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow