2016-12-02 42 views
0

我有一個使用log4net的應用程序。但是,當我顯示一個SaveFileDialog時,appender會被另一個進程覆蓋。看看新的appender,我相信這是因爲他們來自一個處理圖標疊加的進程(因爲他們使用的日誌文件被稱爲「icon-overlays.log」),並且我已經在我的應用程序中打開了資源管理器。Log4net appenders被另一個進程覆蓋

例子:

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之類的程序。 (雖然我有Dropbox,但我沒有看到這個問題) – sgmoore

+0

這也是我的想法,但我不知道如何處理它。有問題的程序是Box Sync。 – Lango

+0

將它作爲bug報告給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

使用這個,我現在已經證實它是覆蓋我的appenders的Box Sync,我會與他們聯繫。 – Lango

+0

選擇這個,因爲它幫助我診斷我的問題 – Lango