【问题标题】:log4net - getting appenders specific to only one loggerlog4net - 获取特定于一个记录器的附加程序
【发布时间】:2014-10-11 10:32:16
【问题描述】:

我正在寻找一种将所有附加程序附加到一个记录器实例的方法。

我试过了:

Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
hierarchy.GetAppenders()

根据文档,这将返回当前配置的所有记录器的所有附加程序。

当我尝试这个时:

LogManager.GetLogger("MyLoggerName").Logger.Repository.GetAppenders();

我得到了同样的结果。

我只想检索附加到一个记录器的附加程序(在本例中为“MyLoggerName”)

我哪里错了?

【问题讨论】:

    标签: logging log4net log4net-appender


    【解决方案1】:

    当你调用以下代码时

    LogManager.GetLogger("MyLoggerName").Logger.Repository.GetAppenders();
    

    实际上,您查询的数据与hierarchy.GetAppenders() 完全相同,因为Hierarchy 继承了LoggerRepositorySkeleton,它实现了ILoggerRepositoryLogger.Repository 返回的类型。

    但是,您可以使用位于 Hierarchy 命名空间中的 Logger 类获取“第一级”附加程序列表:

    var h = LogManager.GetRepository() as Hierarchy;
    var l = h.GetLogger("MyLoggerName", h.LoggerFactory);
    // do something with the l.Appenders property
    

    您将不得不处理特殊情况,例如缓冲或从那里过滤附加程序

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 2014-02-06
      相关资源
      最近更新 更多