2015-10-01 1 views
1

Как установить имя файла NLog на основе статической переменной в моем приложении.NLog создавать файлы журналов на основе статической переменной

У меня есть служба Windows, которая выполняет различные задачи. Читает файл конфигурации с подробными сведениями о задачах. Я хотел бы создать файл журнала на основе заданного имени задачи.

ПРИМЕЧАНИЕ: имя класса не будет работать, поскольку все задачи вызывают один и тот же код.

ПРИМЕЧАНИЕ. Я уже использую переменную $ {logger} как мой текущий класс. Так как мне нужно знать, где я.

------------- UPDATE --------------

Похоже, это не возможно сделать. Измененный вопрос: как установить значения переменных во время выполнения? Я говорю об этом:

<variable name="logFileName" value="" /> 

Спасибо.

ответ

0

Вы не можете, я верю. Но вы можете использовать что-то вроде этого:

В коде:

static NLog.Logger loggerA = NLog.LogManager.GetLogger("nameA"); 
static NLog.Logger loggerB = NLog.LogManager.GetLogger("nameB"); 

void Something() 
{ 
    loggerA.Error("Something"); 
} 

void SomethingElse() 
{ 
    loggerB.Error("SomethingElse"); 
} 

NLog конфигурации:

<nlog ...> 
    <targets> 
     <target name="Error" xsi:type="AsyncWrapper"> 
      <target name="file" xsi:type="File" fileName="${basedir}/Logs/Error.txt"> 
       <layout ... /> 
      </target> 
     </target> 
    </targets> 
    <!--other targets pointing to different files.--> 
    <rules> 
     <logger name="nameA" minlevel="Warn" writeTo="Error" /> 
     <logger name="nameB" minlevel="Trace" maxLevel="Info" writeTo="Log" />--> 
     <logger name="*" minlevel="Trace" maxLevel="Info" writeTo="CommonLog" /> 
    </rules> 
</nlog> 

Вы можете также использовать SomeNamespace.Component.* в качестве имени регистратора и чем только журналы из SomeNamespace.Component будет регистрируется через него. В этом случае регистратор будет получен следующим образом:

static NLog.Logger loggerA = NLog.LogManager.GetCurrentClassLogger(); 

Вот документация Nlog: https://github.com/NLog/NLog/wiki/Tutorial

Существует способ, чтобы изменить конфигурацию NLog программно: https://github.com/nlog/NLog/wiki/Configuration-API

+0

было бы полезно иметь $ {note}, который может быть установлен во время выполнения. Я ничего не нашел в этом списке: https://github.com/NLog/NLog/wiki/Layout-Renderers – Farukh

+0

@Farukh: Я не знаю о такой функции, извините. – Matyas

+0

см. Обновленный вопрос. Благодарим вас за быстрый ответ. – Farukh

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