LogManager.GetLogger和xmlconfigurator.configure序列

时间:2014-07-01 08:32:12

标签: c# log4net

我有自定义xml文件和log4net配置。下面的代码用于配置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(......); 
}

}

2 个答案:

答案 0 :(得分:3)

LogManager类具有静态方法,客户端使用这些方法来请求记录器实例。 GetLogger方法用于检索记录器。

GetLogger方法返回类型ILog的对象,其中包含用于在不同级别进行日志记录的方法,还具有用于确定是否在当前配置中启用了这些日志记录级别的属性。

关于序列,Xmlconfigurator.Configure()方法的调用设置了日志记录功能,因此在编写任何日志之前,必须使用此命令Xmlconfigurator.Configure()设置log4net库。

调用LogManager.GetLogger()Xmlconfigurator.Configure()的顺序无关紧要。只需确保在进行任何日志记录之前,您已使用LogManager.GetLogger()方法初始化了记录器,并使用Xmlconfigurator.Configure()设置了记录器。

参考log4net documentaion

我希望,这有助于回答你的问题:)

答案 1 :(得分:0)

通常XmlConfigurator.configure()是在ASP.NET应用程序的global.asax中的应用程序启动时完成的,因此应用程序中的所有类都可以获得log4net配置。

//Global.asax

void Application_Start(object sender, EventArgs e)
{
    log4net.Config.XmlConfigurator.Configure();
}