У меня есть служебное приложение, которое при запуске читает XML-файл и запускает поток для каждой записи в XML-файле. Каждый поток создает экземпляр рабочего класса, которому требуется, чтобы средство ведения журнала регистрировало любой вывод в файл журнала конкретного потока.
В сервисах app.config у меня есть настройки конфигурации 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")
, а затем я установил свойство PatternStrings LogName текущего потока, используя ThreadContext.Properties ["LogName"] = "Префикс имени журнала"
.
Все файлы создаются, но когда вызывается регистратор, он просто записывает все сообщения в один, казалось бы, случайный файл.
Я долго искал, пытаясь найти решение или ответы на то, что я делаю неправильно, но мне не повезло.
Кто-нибудь знает, почему это происходит?