I have a C# console app that is using NLog. In that app, I'm trying to log information to file locations conditionally. As a contrived example, let's pretend I need to sometimes log entries to an "evens" log file and sometimes I need to log entries to an "odds" log file. In an attempt to do this, I've setup the following configuration:
<nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="evensLogFile" xsi:type="File" fileName="${basedir}/logs/evens.log" createDirs="true" keepFileOpen="true" encoding="utf-8" layout="${longdate} ${message}${exception:format=ToString}"></target>
<target name="oddsLogFile" xsi:type="File" fileName="${basedir}/logs/odds.log" createDirs="true" keepFileOpen="true" encoding="utf-8" layout="${longdate} ${message}${exception:format=ToString}"></target>
</targets>
<rules>
<logger name="Evens" minlevel="Trace" writeTo="evensLogFile" />
<logger name="Odds" minlevel="Trace" writeTo="oddsLogFile" />
</rules>
</nlog>
Now, in my code, when I want to write a log entry, I have the following:
public void Log(string message)
{
var random = new Random();
var i = random.Next(1, 11);
Logger logger = null;
if(i%2 == 0) {
// somehow get a logger for "evens"
} else {
// somehow get a logger for "odds"
}
logger.Log(LogLevel.Info, message);
}
I can successfully write logs to a single log file if I use Logger logger = LogManager.GetCurrentClassLogger();
However, I can't figure out how to log different log messages to different files based on some logic. Any help is appreciated!