Logging in multiple files using NLog

I think you need to define another logger.

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

To log to it:

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

If you want a separate file to log information from another part of your program, you can add a logger and another target.

For example, if you have a program that is completing two different tasks and you want to log those tasks separately, you could do the following

<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>

Then, in your program, access them with:

var task1Logger = NLog.LogManager.GetLogger("task1Logger")
var task2Logger = NLog.LogManager.GetLogger("task2Logger")

Tags:

C#

Winforms

Nlog