我有一个使用log4net的应用程序。但是,当我显示SaveFileDialog时,appender会被另一个进程覆盖。看看新的appender,我相信这是因为它们来自处理图标叠加的进程(因为他们使用的日志文件被称为" 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
当我从这些新的appender中找到日志文件时,我可以看到我遗漏的日志就在那里。
有谁知道这是怎么回事,以及如何避免它?
答案 0 :(得分: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>