2014-12-23 2 views
1

Для некоторых коммерческих целей мне необходимо создать разные файлы журналов и записать их в разные файлы. [От 1 до 1000 динамически меняются]. Это может быть сумасшедшим, но это то, чего хочет бизнес.Зарегистрируйтесь в разных файлах с помощью NLog и настройте его с помощью NLog Config XML

Я могу управлять им с помощью NLog программно: я создаю различные цели для разных файлов журналов программно и создаю имена для каждого из них.

Проблема в том, что теперь я не могу настроить NLog извне: предположим, что я изменю макет файлов журналов. [Теперь я должен сделать это из кода] Мне нужно создать собственный файл конфигурации, который я не хочу.

Я пытаюсь написать, чтобы использовать определение переменной файла NConfig, но NLog не позволяет получать определения переменных из кода.

Возможно ли [любой трюк] создавать регистраторы с разными файлами с файлом NLog Config, не записывая все лог-объекты в файл NLog? [Я не могу добавить все регистраторы в NLog конфигурации, так как я не знаю, сколько я буду создавать, но у меня есть образец, чтобы создать их]

Мой файл журнала Создание Pattern:

У меня есть различные каналы в моем приложении: Для каждого запроса я создаю новый канал с его собственным каналом:

  • Channel1.log Channel2.log Channel3.log .... ChannelN.log

ответ

2

Вы можете использовать петь le file target и включить средство визуализации макета в свой параметр fileName. Эта цель будет выбирать один из нескольких файлов на основе значения, которое предоставил рендеринг макета.

<target xsi:type="File" 
      layout="${message}" 
      fileName="${baseDir}\Log\channel${channelId}.log" 
      createDirs="true" /> 

, где ${channelId} является расположение рендерер, который обеспечивает различное значение для каждого канала. Это значение должно быть получено каким-то образом из контекста запроса.

Вы можете найти существующие layout renderers, чтобы узнать, подходит ли оно любому из них или написать свой собственный рендерер.

Смежные вопросы