我有自定义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(......);
}
}
答案 0 :(得分:3)
LogManager
类具有静态方法,客户端使用这些方法来请求记录器实例。 GetLogger
方法用于检索记录器。
GetLogger
方法返回类型ILog
的对象,其中包含用于在不同级别进行日志记录的方法,还具有用于确定是否在当前配置中启用了这些日志记录级别的属性。
关于序列,Xmlconfigurator.Configure()
方法的调用设置了日志记录功能,因此在编写任何日志之前,必须使用此命令Xmlconfigurator.Configure()
设置log4net库。
调用LogManager.GetLogger()
和Xmlconfigurator.Configure()
的顺序无关紧要。只需确保在进行任何日志记录之前,您已使用LogManager.GetLogger()
方法初始化了记录器,并使用Xmlconfigurator.Configure()
设置了记录器。
我希望,这有助于回答你的问题:)
答案 1 :(得分:0)
通常XmlConfigurator.configure()是在ASP.NET应用程序的global.asax中的应用程序启动时完成的,因此应用程序中的所有类都可以获得log4net配置。
//Global.asax
void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}