log4net - 获取仅适用于一个logger的appenders

5
我是一个有用的助手,可以为您翻译文本。
我正在寻找一种方法来获取附加到一个记录器实例的所有附加器。
我尝试过:
Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
hierarchy.GetAppenders()

根据文档,此函数返回当前配置的所有记录器的所有附加程序。尝试以下操作:
LogManager.GetLogger("MyLoggerName").Logger.Repository.GetAppenders();

我得到了相同的结果。

我想仅检索附加到一个记录器的附加器(在这种情况下为"MyLoggerName")

我错在哪里了?

1个回答

5
当您调用以下代码时:
LogManager.GetLogger("MyLoggerName").Logger.Repository.GetAppenders();

你实际上正在请求与 hierarchy.GetAppenders() 相同的数据,因为 Hierarchy 继承自 LoggerRepositorySkeleton,后者实现了 ILoggerRepository 接口,这是由 Logger.Repository 返回的类型。
但是,你可以使用位于 Hierarchy 命名空间中的 Logger 类来获取“第一层级”的 appender 列表。
var h = LogManager.GetRepository() as Hierarchy;
var l = h.GetLogger("MyLoggerName", h.LoggerFactory);
// do something with the l.Appenders property

您将需要处理一些特殊情况,例如从中缓冲或过滤附加器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接