I am using NLog for logging purpose.
My code is as follows:
<?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>
I am logging data in debugLog1.txt
. Now from another location in project I also want to log data but this data is of another
type so I want to make a debugLog2.txt
and log data to it. How can I modify my above code to do this
I think you need to define another logger.
<logger name="SpecialLogger" minlevel="Trace" writeTo="logfile2" />
And then into this another location in project 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")
Please note that you could use layout renderers in the filename (even custom layout renderers) and so this will also make multiple files:
<target
name="logfile"
xsi:type="File"
layout="${message}"
fileName="${basedir}../Data/${level}.txt"
...
/>
In this example it's a log file for each loglevel (fatal, error, warn, info, debug, trace)
来源:https://stackoverflow.com/questions/20352325/logging-in-multiple-files-using-nlog