File lock error when using FileAppender with XmlConfigurator.ConfigureAndWatch (v3.3.1)

Open
#321 1 comment 0 reactions 1 assignee View on GitHub

@FreeAndNil is already working on this.

Since Sep 19, 2026.

Assessment

This issue has not been assessed yet.

Description

bug regression

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().

Dominant language
C#
Stars
934
Forks
333
Avg merge
1d 11h
Merged PRs (30d)
7

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from apache/logging-log4net

All issues in apache/logging-log4net

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.