2016-12-02 10 views
0

私はlog4netを使用しているアプリケーションを持っています。しかし、SaveFileDialogを表示すると、アペンダーは別のプロセスによって上書きされます。新しいアペンダーを見ると、アイコンオーバーレイを扱うプロセス(これは、使用するログファイルが「icon-overlays.log」と呼ばれているため)であり、アプリケーション内でエクスプローラーを開いたためです。他のプロセスによって上書きされたLog4netアペンダー

例:

Log.Fatal("Before dialog");// logs fine 

SaveFileDialog newFileDialog = new Microsoft.Win32.SaveFileDialog(); 

Log.Fatal("Open dialog");//logs fine 

var appenders1 = Log.Logger.Repository.GetAppenders();//shows appenders from my config 

if (newFileDialog.ShowDialog() == false) 
{ 
    Log.Fatal("Cancelled dialog");//does not log 
    return; 
} 

var appenders2 = Log.Logger.Repository.GetAppenders();//shows appenders from other process 
Log.Fatal("New database selected");//does not log 

私は私が行方不明ですログがそこに行くされていることがわかりますこれらの新しいアペンダからログファイルを見つけます。

これがどのように起こっているのか、どのように回避するのかは誰にも分かりますか?

+0

は、バグのあるシェル拡張のような音

は、内部のデバッグを有効にします。アイコンオーバーレイは、アイコンを変更するドロップボックスなどのプログラムで指を指すことになります。 (私はDropboxを持っていて、私はその問題を見ていませんが) – sgmoore

+0

それは私の前提でしたが、それに対処する方法はわかりません。問題のプログラムはBox Syncです。 – Lango

+0

Boxにバグとして報告するか、すでにバグを修正しているかどうか確認してください。 – sgmoore

答えて

2

何が起きているのかを確認するには、log4netデバッグログを調べる必要があります。あなたがlog4netを設定/再設定し、ダイアログを開いたときにそのような場所にヒットする複数の場所があるようです。特定のファイルへ

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 

書き込み:

<configuration> 
    ... 

    <system.diagnostics> 
     <trace autoflush="true"> 
      <listeners> 
       <add 
        name="textWriterTraceListener" 
        type="System.Diagnostics.TextWriterTraceListener" 
        initializeData="C:\tmp\log4net.txt" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 

    ... 
</configuration> 
+0

これを使用して、私は今、それがBox Syncであることを確認しました。私のアペンダーを上書きしています。連絡します。 – Lango

+0

これを選択すると、問題を診断するのに役立ちました – Lango

関連する問題