2013-12-03 2 views
21

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

Мой код выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

    <!-- make sure to set 'Copy To Output Directory' option for this file --> 
    <!-- go to http://nlog-project.org/wiki/Configuration_file for more information --> 

    <targets> 
    <target 
     name="logfile" 
     xsi:type="File" 
     layout="${message}" 
     fileName="${basedir}../Data/debugLog1.txt" 
     archiveAboveSize ="5000000" 
     maxArchiveFiles="2"/> 
    </targets> 

    <rules> 
    <logger name="*" minlevel="Trace" writeTo="logfile" /> 
    </rules> 
</nlog> 

Я регистрации данных в debugLog1.txt. Теперь из другого места в проекте я также хочу регистрировать данные, но эти данные относятся к другому типу , поэтому я хочу сделать debugLog2.txt и записывать данные на него. Как я могу изменить свой код выше, чтобы сделать это

ответ

26

Думаю, вам нужно определить другой регистратор.

<logger name="SpecialLogger" minlevel="Trace" writeTo="logfile2" /> 

А потом в это другое место в журнале проекта к нему:

var logger = LogManager.GetLogger("SpecialLogger"); 
+0

Благодарю вас за ответ. по крайней мере, какое-то тело достаточно любезно ответить. Я приму ответ. просто позвольте мне проверить это – user3061597

33

Если вы хотите отдельный файл для регистрации информации из другой части вашей программы вы можете добавить регистратор и другую цель.

Например, если у вас есть программа, которая с завершением двух различных задач, и вы хотите протоколировать эти задачи отдельно можно сделать следующий

<targets> 
    <target 
    name="task1File" 
    xsi:type="File" 
    layout="${message}" 
    fileName="${basedir}../Data/debugLog1.txt" 
    archiveAboveSize ="5000000" 
    maxArchiveFiles="2"/> 
    <target 
    name="task2File" 
    xsi:type="File" 
    layout="${message}" 
    fileName="${basedir}../Data/debugLog2.txt" 
    archiveAboveSize ="5000000" 
    maxArchiveFiles="2"/> 
</targets> 

<rules> 
    <logger name="task1Logger" minlevel="Trace" writeTo="task1File" /> 
    <logger name="task2Logger" minlevel="Trace" writeTo="task2File" /> 
</rules> 

Затем в доступе программы им с:

var task1Logger = NLog.LogManager.GetLogger("task1Logger") 
var task2Logger = NLog.LogManager.GetLogger("task2Logger") 
Смежные вопросы