【发布时间】:2016-12-02 12:25:15
【问题描述】:
我有一个使用 log4net 的应用程序。但是,当我显示 SaveFileDialog 时,附加程序会被另一个进程覆盖。查看新的附加程序,我相信这是因为它们来自处理图标覆盖的进程(因为它们使用的日志文件称为“icon-overlays.log”)并且我已经在我的应用程序中打开了资源管理器。
例子:
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
当我从这些新的附加程序中找到日志文件时,我可以看到我丢失的日志正在那里。
有谁知道这是怎么发生的,以及如何避免它?
【问题讨论】:
-
听起来像是一个有问题的 shell 扩展。图标覆盖将指向更改图标的程序,例如 Dropbox。 (虽然我有 Dropbox,但我没有看到这个问题)
-
这也是我的假设,但我不知道如何处理它。有问题的程序是 Box Sync。
-
将它作为错误报告给 Box,或者看看他们是否已经修复它。
-
一种选择是在调用 SaveFileDialog 后重新加载配置。
标签: c# logging log4net log4net-appender