Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Logging in multiple files using NLog

Tags:

c#

winforms

nlog

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 the 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 code above to do so?

like image 847
user3061597 Avatar asked Dec 03 '13 13:12

user3061597


People also ask

How do I start logging with NLog?

Create a Console Application project in Visual Studio. Install NLog and its dependencies. Create and configure the NLog logger. Integrate the logger into the C# Console Application.

Is NLog asynchronous?

NLog 1.0 supports asynchronous logging, but there is no good support for asynchronous exception handling. This is because wrappers targets are not capable of receiving exceptions which are raised on other threads.

Where are NLog logs stored?

By default, the web. nlog file can be found at: C:\Program Files (x86)\Pleasant Solutions\Pleasant Password Server\www\web. nlog.

What is NLog Web AspNetCore?

NLog is a flexible and free logging platform for various . NET platforms, including . NET standard. NLog makes it easy to write to several targets. (database, file, console) and change the logging configuration on-the-fly.


2 Answers

I think you need to define another logger.

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

To log to it:

var logger = LogManager.GetLogger("SpecialLogger"); 
like image 147
Alexander Burov Avatar answered Sep 23 '22 14:09

Alexander Burov


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") 
like image 27
nahammel Avatar answered Sep 21 '22 14:09

nahammel