我目前正在使用使用log4net的应用程序。通过Windows资源管理器启动应用程序时,日志记录工作正常,但如果将应用程序设置为Windows shell,则不记录任何内容。当应用程序是shell时,是否存在Windows资源管理器提供的任何log4net依赖项?
修改
在应用程序通过OnStartUp()
(这是一个WPF应用程序)启动后,log4net在不同的程序集中进行初始化和配置。
log4net的初始化和配置如下所示:
var assembly = Assembly.GetEntryAssembly();
log4net.GlobalContext.Properties["ApplicationName"] = (assembly != null) ? assembly.GetName().Name : "Unmanaged";
var log4NetFileInfo = new FileInfo("log4net.config");
log4net.Config.XmlConfigurator.ConfigureAndWatch(log4NetFileInfo);
答案 0 :(得分:0)
这可能是一个权限问题。 Log4net被设计为在出错时无声地失败,理由是没有日志记录比死应用程序更好。
在Windows资源管理器中运行的凭据是否与在Windows shell中运行时不同?您是否使用相对路径来查找log4net配置文件?当前工作目录在启动应用程序的两种方式之间是否有所不同?
有关启用log4net内部调试的详细信息,请参阅此问题的答案Log4net doesn't write to file。