Cały czas używam log4net, ale nigdy nie wymyśliłem, jak powiedzieć, co się dzieje w środku. Na przykład w moim projekcie mam program dołączający do konsoli i program dołączający do bazy danych. Wprowadziłem kilka zmian w bazie danych i kodzie, a teraz program dołączający do bazy danych już nie działa. Zastanowię się, dlaczego w końcu, ale bardzo by mi pomógł, gdybym mógł zobaczyć, co się dzieje w log4net.
Czy log4net generuje jakieś dane wyjściowe, które mogę wyświetlić, aby spróbować ustalić źródło mojego problemu?
C:\tmp\log4net.txt
naC:\log4net.txt
, wtedy może wygenerować plik tekstowy.<configSections></configSections>
jest to pierwszy wpis w sekcji<configuration>
. W przeciwnym razie pojawi się błąd.traceOutputOptions="TimeStamp"
oraztraceOutputOptions="DateTime"
wadd
tagu, ale to nic nie zmienia w zawartości pliku dziennika. Czy ktoś wie, jak skonfigurować log4net, aby wyświetlał czas dla każdej linii / wpisu w pliku dziennika śledzenia?Jeśli używasz pliku konfiguracyjnego log4net, możesz również włączyć tam debugowanie, zmieniając górny węzeł na:
Działa to po ponownym załadowaniu konfiguracji i przy założeniu, że Twój detektor śledzenia jest poprawnie skonfigurowany.
źródło
Oprócz powyższej odpowiedzi można użyć tego wiersza, aby wyświetlić dziennik w czasie rzeczywistym zamiast wyniku c: \ tmp \ log4net.txt.
Na przykład w aplikacji konsoli możesz to dodać, a następnie oglądać dane wyjściowe w czasie rzeczywistym. Dobrze jest debugować log4net w małej uprzęży testowej, aby zobaczyć, co się dzieje z testowanym aplikatorem.
źródło
Upewnij się, że aplikacja root, w której znajduje się punkt wejścia, loguje coś do log4net. Podaj jedną z nich:
Z wersją 2.0.8 miałem ciekawą sytuację. Stworzyłem projekt biblioteki i testowy projekt exe, który demonstrowałby jego możliwości. Projekt biblioteki został skonfigurowany do używania Log4net, podobnie jak projekt exe. Projekt exe wykorzystał atrybut assemblyinfo do zarejestrowania konfiguracji, ale nie otrzymywałem danych wyjściowych rejestrowania ani w konsoli, ani w pliku dziennika. Kiedy włączyłem wewnętrzne rejestrowanie debugowania log4net, dostałem kilka wewnętrznych komunikatów zapisanych w konsoli, ale nadal nie ma moich normalnych dzienników. Nie zgłoszono żadnych błędów. Wszystko zaczęło działać, gdy dodałem powyższy kod do mojego programu. Log4net został inaczej skonfigurowany poprawnie.
źródło
Jeśli wewnętrzny dziennik nie zawiera wystarczających informacji, bardzo łatwo jest zbudować i debugować kod źródłowy . Jeśli nie chcesz mieszać tego z projektem programistycznym, dodaj prostą aplikację konsoli, która po prostu rejestruje komunikat, skopiuj projekt
log4net.config
do tej aplikacji i debuguj klasę.źródło
W log4net 2.0.8 rejestrowanie za pomocą log4net w oddzielnej bibliotece DLL nie jest możliwe. Gdybym tego spróbował, wyniki są bardzo dziwne: rejestrowanie nie jest już wykonywane. Inicjalizacja log4net z opcją debugowania nie pokazuje błędów.
Jak powiedział K0D4, powinieneś mieć odniesienie do log4net w głównym module i powinien on wywoływać raz na początku programu i wszystko jest w porządku.
W następnej wersji log4net ten błąd prawdopodobnie zostanie naprawiony.
źródło