Utworzyłem prosty scenariusz przy użyciu Log4net, ale wygląda na to, że moje programy dołączające dzienniki nie działają, ponieważ komunikaty nie są dodawane do pliku dziennika.
Dodałem do pliku web.config:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file value="D:\MyData\Desktop\LogFile.txt" />
<appendToFile value="true" />
<encoding value="utf-8" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<level value="INFO" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
W ramach globalnego pliku ASAX dodałem:
ILog logger = LogManager.GetLogger(typeof(MvcApplication));
A w ramach metody Application_Start:
logger.Info("Starting the application...");
Dlaczego dziennik testu „Uruchamianie aplikacji ...” nie jest dodawany do pliku dziennika?
AssemblyInfo
pliku. Opublikowane jako odpowiedź poniżej.Skorzystaj z tej strony z często zadawanymi pytaniami : Często zadawane pytania dotyczące log4net Apache
Około 3/4 drogi w dół pokazuje, jak włączyć debugowanie log4net przy użyciu śledzenia aplikacji. Dzięki temu dowiesz się, gdzie jest Twój problem.
Podstawy to:
I widzisz ślad na standardowym wyjściu
źródło
root
sekcja odnosi się do niewłaściwego rejestratora !!Jak zasugerował @AndreasPaulsson, musimy to skonfigurować. Konfiguruję w
AssemblyInfo
pliku. Podajęconfiguration file name
tutaj.źródło
Upewnij się również, że opcja „Zawsze kopiuj” jest wybrana dla pliku [log4net] .config
źródło
Upewnij się, że proces (konto), na którym działa witryna, ma uprawnienia do zapisu w katalogu wyjściowym.
W usługach IIS 7 i nowszych jest to konfigurowane w puli aplikacji i zwykle jest to tożsamość puli aplikacji , która normalnie nie ma uprawnień do zapisu we wszystkich katalogach.
Sprawdź dzienniki zdarzeń (aplikacje i zabezpieczenia), aby zobaczyć, czy nie zostały zgłoszone żadne wyjątki.
źródło
Wstawić:
na końcu pliku AssemblyInfo.cs
źródło
Dla mnie przeniosłem lokalizację plików dziennika i dopiero gdy zmieniłem nazwę pliku na coś innego, zaczął się ponownie.
Wydaje się, że jeśli istnieje już plik dziennika o tej samej nazwie, nic się nie dzieje.
Następnie zmieniam nazwę starego pliku i ponownie zmieniam nazwę pliku dziennika w konfiguracji z powrotem na taką, jaka była.
źródło
W moim przypadku log4net nie logował się poprawnie ze względu na spację w nazwie mojego projektu. Doprowadziło mnie do szału, dlaczego ten sam kod działał dobrze w innym projekcie, a nie w nowym. Spaces. Prosta przestrzeń.
Uważaj więc na spacje w nazwach projektów. Nauczyłem się mojej lekcji.
źródło
W moim przypadku musiałem nadać
IIS_IUSRS
uprawnienia do odczytu / zapisu do pliku dziennika.źródło
Upewnij się, że następujący kod linii powinien znajdować się w pliku AssemblyInfo.cs.
[assembly: log4net.Config.XmlConfigurator (ConfigFile = "Web.config", Watch = true)]
a także sprawdź tę linię w metodzie Application_start ().
źródło
Twój plik konfiguracyjny wydaje się poprawny. Następnie musisz zarejestrować plik konfiguracyjny Log4net w aplikacji. Możesz więc użyć poniższego kodu:
Po rejestracji możesz wywołać poniższą definicję, aby wywołać rejestrator połączeń:
źródło
Dla mnie musiałem przenieść Loggera do pakietu Nuget. Poniższy kod należy dodać w projekcie pakietu NuGet.
Więcej informacji można znaleźć pod adresem https://gurunadhduvvuru.wordpress.com/2020/04/30/log4net-issues-when-moved-it-to-a-nuget-package/ .
źródło
Log4net można używać na kilka sposobów. Okazało się, że jest to przydatne, gdy szukałem rozwiązania. Rozwiązanie jest opisane tutaj: https://www.hemelix.com/log4net/
źródło