Если я вас понимаю, ваше приложение не переключается между режимами.
Если это так, то я подозреваю, что использование вашего кода создаст оба файла, но на самом деле только запись в один.
Если важно избавиться от файла нулевого байта, вы можете попробовать что-то вроде:
log4net.GlobalContext.Properties["MyLogFileName"] =
(mode == BuySomeThing) ? "Log_BuySomething.txt" : "Log_SellSomeOtherThing.txt" ;
XmlConfigurator.Configure();
Вам также нужно изменить свой конфигурационный файл, чтобы у него был только один appender, и указать ему использовать это свойство для имени файла, например,
<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>
Это должно закончиться созданием только одного файла. (В этом примере он будет создан в папке logfiles).