Reputation: 2118
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?
Upvotes: 1
Views: 1533
Reputation: 16067
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:
log4net.GlobalContext.Properties["MyLogFileName"] =
(mode == BuySomeThing) ? "Log_BuySomething.txt" : "Log_SellSomeOtherThing.txt" ;
XmlConfigurator.Configure();
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.
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="Logfiles\%property{MyLogFileName}" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
This should end up creating just one file. (In this example it will be created in the folder logfiles).
Upvotes: 1