2011-10-21 21 views
1

インターネットには同じトピックについての記事がいくつかありますが、Windowsフォームアプリケーションから複数のログファイルを書き込むこともできます。しかし私の要求は少し異なります。Log4Netと複数のログファイル

私のアプリには、「BuySomething」モード&「SellSomeOtherThing」モードのような2つのモードがあります。そして "BuySomething"モードでは、Log_BuySomething.txtとLog_SellSomeOtherThing.txtに書きたいと思う。そうでなければ(確実に一つのモードが選択される)。

app.configファイルでは、StackOverflowの最後の投稿Questionと同じ構造になっています。
私の問題は、コードXmlConfigurator.Configure();が実行されると、app.configファイルの両方のLogFileAppendersに記載されている名前の空のログファイルが作成されることです。私は、次のコードは、それを解決するだろうと思ったが、それはしませんでした:

if (mode == BuySomeThing) 
{ 
    logger = LogManager.GetLogger("LogFileAppender1"); 
} 
else 
{ 
    LogManager.GetLogger("LogFileAppender2"); 
} 
XmlConfigurator.Configure(); 

にはどうすればいいだけ適切なログファイルは、アプリケーションのインスタンスのために作成されていることを確認することができますか?

答えて

1

あなたのことを理解していれば、アプリはモードを切り替えることはありません。

もしそうなら、あなたのコードを使用すると両方のファイルが作成され、実際にはどちらか一方にしか書き込まないと思われます。 0バイトのファイルを取り除く場合

はあなたのような何かを試みることができることが重要です:

log4net.GlobalContext.Properties["MyLogFileName"] = 
    (mode == BuySomeThing) ? "Log_BuySomething.txt" : "Log_SellSomeOtherThing.txt" ; 

XmlConfigurator.Configure(); 
あなたはまた、唯一のアペンダを持っているあなたの設定ファイルを変更すると、このプロパティを使用するように指示する必要があり

ファイル名、例

これで1つのファイルが作成されます。 (この例では、logfilesフォルダに作成されます)。

+0

これは完璧に機能します。ありがとう! – ViV

関連する問題