Widzimy sporadyczny problem na maszynach programistycznych i produkcyjnych, w wyniku którego nasze pliki dziennika nie są rejestrowane.
Podczas uruchamiania w programowaniu i debugowaniu przy użyciu programu Visual Studio otrzymujemy następujące komunikaty o błędach log4net w oknie wyjściowym VS:
log4net:ERROR [RollingFileAppender] Unable to acquire lock on file C:\folder\file.log.
Proces nie może uzyskać dostępu do pliku „C: \ folder \ plik.log”, ponieważ jest on używany przez inny proces.
log4net:ERROR XmlConfigurator: Failed to find configuration section 'log4net' in the application's .config file.
Check your .config file for the <log4net> and <configSections> elements.
Sekcja konfiguracji powinna wyglądać następująco:
<section
name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
Obecnie naszym rozwiązaniem tego problemu jest zmiana nazwy ostatniego pliku dziennika. Oczywiście spodziewalibyśmy się, że to się nie powiedzie (z powodu wspomnianej blokady plików), ale zwykle tak się nie dzieje. Raz lub dwa razy zmiana nazwy nie powiodła się z powodu blokady z procesu aspnet_wp.exe .
Nasza sekcja konfiguracji log4net jest pokazana poniżej:
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\folder\file.log"/>
<appendToFile value="true" />
<datePattern value="yyyyMMdd" />
<rollingStyle value="Date" />
<maximumFileSize value="10MB" />
<maxSizeRollBackups value="100" />
<layout type="log4net.Layout.PatternLayout">
<header value="[Header]
"/>
<footer value="[Footer]
"/>
<conversionPattern value="%date %-5level %logger ${COMPUTERNAME} %property{UserHostAddress} [%property{SessionID}] - %message%newline"/>
</layout>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
Jak wspomniano, widzimy to sporadycznie na komputerach, ale gdy problem się pojawi, będzie nadal występował.
źródło
Należy również pamiętać o często zadawanych pytaniach dotyczących log4net :
źródło
Jeśli masz
i dodaj
wtedy wystąpi błąd podczas przewijania. Pierwszy proces utworzy nowy plik i zmieni nazwę bieżącego pliku. Następnie następny proces zrobi to samo i weźmie nowo utworzony plik i nadpisze nowo zmienioną nazwę. W rezultacie logfiel z ostatniego dnia jest pusty.
źródło