【问题标题】:LogManager.GetLogger and xmlconfigurator.configure sequenceLogManager.GetLogger 和 xmlconfigurator.configure 序列
【发布时间】:2014-07-01 17:42:33
【问题描述】:

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

}

【问题讨论】:

    标签: c# log4net


    【解决方案1】:

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

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

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

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

    参考log4net documentaion

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

    【讨论】:

    • 是否需要 BasicConfigurator.Configure()?现在我不使用这个。只需使用 GetLogger() 和 XmlConfigurator.Configure() 就可以正常工作?
    • @Imortal 对不起,我的错误,检查更新的答案。如果您想在没有 XML 文件的情况下进行配置,则可以使用BasicConfigurator.Configure()。如果您使用的是XmlConfigurator.Configure(),则不需要BasicConfigurator.Configure()
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多