Ведение журнала в отдельный файл журнала для каждого отдельного потока

У меня есть служебное приложение, которое при запуске читает 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"] = "Префикс имени журнала" .

Все файлы создаются, но когда вызывается регистратор, он просто записывает все сообщения в один, казалось бы, случайный файл.

Я долго искал, пытаясь найти решение или ответы на то, что я делаю неправильно, но мне не повезло.

Кто-нибудь знает, почему это происходит?

10
задан Philipp M 5 November 2013 в 11:24
поделиться