ウェブアプリケーション内ですべてのlog4netアペンダーをセットアップして正常に動作していますが、別のスレッドを設定してデータ同期プロセスを開始すると、そのスレッド内のすべてのログステートメントが空のアビシスに入ります。私のアペンダーは誰も解雇されません。だれかがそれがなぜだろうという手がかりを持っていますか?Log4Netは別のスレッドにログステートメントを記録しないのはなぜですか?
private static readonly ILog Log = LogManager.GetLogger("mylog");
public static string SomeValue
{
get
{
Log.Debug("This WILL be appended to the log");
var thread = new Thread(SyncData);
thread.Start();
return "the value";
}
}
private static void SyncData()
{
Log.Debug("This will NOT be appended to log");
var newLog = LogManager.GetLogger("mylog");
newLog.Debug("This will also NOT be appended to the log");
}
これは問題の解決に役立ちました。私のアペンダの1人は、 'HttpContext.Current'に頼っていました。そして、HttpContext.Currentは、Webアプリケーションスレッドから生成された新しいスレッドでNULLになっています。 –