Log4Net
アプリケーションで例外をログに記録するために使用してい.Net Windows service
ます。
私の Windows サービス アプリケーションは で実行multi-threading execution
されています。つまり、各タスクはそれぞれ異なるスレッドで処理されており、Delegate - (BeginInvoke)
パターンを使用しています。
重要なのは、 アプリケーションのさまざまなシナリオに基づいてdynamic properties
複数のログ ファイルを動的に生成するために使用していることです。Log4Net
さて、すべてのlogging/ exception
シナリオ (C# メソッド) で、Logger.Log
メソッドを使用して info/exception をログに記録しましたLog4Net
。
コード (動的ファイル生成)
GlobalContext.Properties[FileNameParameter] = DirectoryName + fileName;
LogManager.Info(logMessage);
構成設定
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="D:\Data\%property{FileName}_info.log"/>
</appender>
問題は (私が信じている)、マルチスレッド コードの実行により、Log4Net で次のような奇妙な結果が得られることです。
- ログ ファイルが生成されることがありますが、メッセージの内容はありません。
- ファイル自体が生成されないことがあります。
- いくつかのファイルが生成されることもあれば、生成されないこともあります。
Log4Net がこのように動作する理由を教えてください。マルチスレッド コード実行による安定したロギングが必要です。
前もって感謝します!