У меня есть приложение-служба, которое при запуске читает файл XML и запускает поток для каждой записи в файле XML.Каждый поток создает экземпляр рабочего класса, который требует, чтобы регистратор регистрировал любые выходные данные в файле журнала конкретного потока.
В app.config services у меня есть настройки конфигурации log4net для использования XML-приложения, а файл указан как PatternString, как показано ниже:
<appender name="XmlAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="D:\Temp\Logs\%property{LogName}.log" />
<immediateFlush value="true"/>
<appendToFile value="true" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
В потоке заблокирован методдля каждого созданного экземпляра рабочего класса я получаю регистратор с помощью метода log4net.LogManager.GetLogger("MyLogger")
, а затем устанавливаю текущее свойство ThreadStrings LogName с помощью ThreadContext.Properties["LogName"] = "Log name prefix"
.
Все файлы создаются, но когда вызывается регистратор, он просто записывает все сообщения в один, казалось бы, случайный файл.
Я довольно долго искал, пытаясь найти решение или какое-то другое.ответы на то, что я делаю неправильно, но мне не повезло.
У кого-нибудь есть идеи, почему это происходит?