我有带有log4net配置的自定义xml文件。以下代码用于配置log4net。它工作得很好。
问题是,当LogManager.Getlogger不知道配置文件的细节时,它是如何获得"MyLogger“的?
在调用LogManager.GetLogger和xmlconfigurator.configure时,我们应该保持任何顺序吗?
Class LoggerClass
{
private static readonly ILog fileLogger = LogManager.GetLogger("MyLogger");
public LoggerClass()
{
FileInfo logConfiguration = new FileInfo("ConfigFile.xml");
//Loading the configuration from the xml file.
XmlConfigurator.Configure(logConfiguration);
}
public void Log(string msg)
{
fileLogger.Log(......);
}
}发布于 2014-07-01 17:16:33
LogManager类具有客户端用来请求记录器实例的静态方法。GetLogger方法用于检索记录器。
GetLogger方法返回类型为ILog的对象,该对象包含用于在不同级别进行日志记录的方法,并且还具有用于确定在当前配置中是否启用了这些日志记录级别的属性。
关于序列,Xmlconfigurator.Configure()方法的调用将设置日志记录功能,因此在写入任何日志之前,必须使用此命令Xmlconfigurator.Configure()设置log4net库。
并且调用LogManager.GetLogger()和Xmlconfigurator.Configure()的顺序并不重要。只需确保在进行任何日志记录之前,您已经使用LogManager.GetLogger()方法初始化了记录器,并且已经使用Xmlconfigurator.Configure()设置了记录器。
参考:
我希望,这有助于并回答您的问题:)
发布于 2014-07-01 16:50:31
通常,XmlConfigurator.configure()是在ASP.NET应用程序中的global.asax中的应用程序启动时完成的,因此应用程序中的所有类都会获得log4net配置。
//Global.asax
void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}https://stackoverflow.com/questions/24505746
复制相似问题