【发布时间】:2012-06-27 11:22:22
【问题描述】:
我有一个广泛使用 log4net 的 C# (.NET 3.5) 应用程序。 log4net 配置位于app.config 文件中。
在AssemlyInfo.cs 中使用[assembly: XmlConfigurator(Watch = true)] 完成配置
应用程序使用单个应用程序范围的记录器实例,在记录器包装类的静态构造函数中实例化:
public class Logger{
//....
private static readonly ILog logger;
static Logger()
{
logger = LogManager.GetLogger(Assembly.GetEntryAssembly().GetName().Name);
AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
}
//....
}
该应用程序旨在通过调度程序在远程服务器上运行,无需人工,独自在黑暗中。 :) 问题是,如果缺少配置文件,它只会静默崩溃(没有 log4net 配置 => 没有日志记录)。
有没有办法检查配置中是否有任何附加程序,如果没有 - 以编程方式添加某种后备附加程序。
我是 log4X 记录器家族的新手,所以,如果我要问一些琐碎的问题 - 请善待,log4net 文档真的很糟糕。 :)
【问题讨论】:
-
可以操作日志,看看这个答案:stackoverflow.com/questions/1519728/…
-
测试配置文件是否存在。如果它不存在,请在代码中创建您的记录器 - stackoverflow.com/questions/1436713/…。或者,将应用程序的 log4net 配置打包为嵌入式资源,这样它就永远不会丢失。或者只是确保您始终将配置与应用程序一起提供;-)