LogManager.GetLogger和xmlconfigurator.配置序列

本文关键字:配置 xmlconfigurator GetLogger LogManager | 更新日期: 2023-09-27 18:10:51

我有一个带有log4net配置的自定义xml文件。下面的代码用于配置log4net。它工作得很好。

问题是LogManager。Getlogger得到"MyLogger"时,它不知道配置文件的详细信息?

在调用LogManager时,我们应该维护任何序列吗?GetLogger和xmlconfigurator。配置吗?

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(......); 
}
}

LogManager.GetLogger和xmlconfigurator.配置序列

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

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

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

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

参考

: log4net documentaion

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

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

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