2016-12-02 171 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