起動時にXMLファイルを読み込み、XMLファイル内の各エントリのスレッドを開始するサービスアプリケーションがあります。各スレッドは、スレッド固有のログファイルに出力を記録するためにロガーを必要とするワーカークラスのインスタンスを作成します。私はlog4netの構成設定はXMLアペンダを使用するように設定されており、以下に示すように、ファイルがPatternStringとして指定されたApp.configファイルサービスに個々のスレッドごとに個別のログファイルに記録する
:のインスタンスごとにスレッドロック方法において
<appender name="XmlAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="D:\Temp\Logs\%property{LogName}.log" />
<immediateFlush value="true"/>
<appendToFile value="true" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
ワーカークラスを作成しました。log4net.LogManager.GetLogger("MyLogger")
メソッドを使用してロガーを取得し、ThreadContext.Properties["LogName"] = "Log name prefix"
を使用して現在のスレッドPatternStrings LogNameプロパティを設定しました。
すべてのファイルが作成されますが、ロガーが呼び出されると、一見無作為なファイルにすべてのメッセージが記録されます。
私は、しばらくの間、私が間違っていることに解決策や何らかの答えを見つけようとしたが、私は運がなかった。
これはなぜ起こっているのですか?
大きな感謝!私はスレッド化と異なるファイルにログインするのと同じ問題を抱えていました。私は多くの記事とソリューションを見ていたが、この1つだけが私を癒した。 –
ありがとうございました...このアプローチは私の問題を解決しました... – Emerson