There are several posts on the internet for the same topic and I am also able to write multiple log files from my Windows Forms App. But my requirement is slightly different.
My app has two modes of running, say like “BuySomething” mode & “SellSomeOtherThing” mode. And when it is in “BuySomething” mode I want to write to Log_BuySomething.txt and to Log_SellSomeOtherThing.txt otherwise (one mode will be selected for sure).
In the app.config file, I have the same structure as in the last post of a StackOverflow Question.
My problem is that, when the code XmlConfigurator.Configure(); is executed, it creates empty log files of the names mentioned in both LogFileAppenders in the app.config file. I thought the following code would solve it, but it didn’t:
if (mode == BuySomeThing)
{
logger = LogManager.GetLogger("LogFileAppender1");
}
else
{
LogManager.GetLogger("LogFileAppender2");
}
XmlConfigurator.Configure();
How can I make sure that only the appropriate log file is created for that instance of the App?
If I understand you, your app doesn’t switch between modes.
If so, then I would suspect that using your code will create both files, but only actually write to one.
If getting rid of the zero-byte file is important you could try something like:
You also need to change your config file to only have one appender and tell it to use this property for the file name, e.g.
This should end up creating just one file. (In this example it will be created in the folder logfiles).