When using the XmlConfigurator's file-watching, like this:
var logRepository = LogManager.GetRepository(typeof(Program).Assembly);
XmlConfigurator.ConfigureAndWatch(logRepository, new FileInfo("log.config"));
with a simple FileAppender config, like this:
<log4net>
<appender name="log.log" type="log4net.Appender.FileAppender">
<file value=".\log.log" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="log.log" />
</root>
</log4net>
When editing the config-file at run-time, you get:
log4net:ERROR [FileAppender] ErrorCode: GenericFailure. Unable to acquire lock on file ...\log.log. The process cannot access the file '...\log.log' because it is being used by another process.
Due the file-change, the appenders are getting re-configured.
v3.3.0 old appenders were stopped and removed before new appenders were created and added.
v3.3.1 new appenders are created before old appenders are stopped.
The old appender still has a lock on the file.
The new appender is created and calls ActivateOptions()->OpenFile().
When using the XmlConfigurator's file-watching, like this:
with a simple FileAppender config, like this:
When editing the config-file at run-time, you get:
log4net:ERROR [FileAppender] ErrorCode: GenericFailure. Unable to acquire lock on file ...\log.log. The process cannot access the file '...\log.log' because it is being used by another process.Due the file-change, the appenders are getting re-configured.
v3.3.0old appenders were stopped and removed before new appenders were created and added.v3.3.1new appenders are created before old appenders are stopped.The old appender still has a lock on the file.
The new appender is created and calls ActivateOptions()->OpenFile().