5

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

我试过:

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

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

当我尝试这个时:

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

我得到相同的结果。

我只想检索附加到一个记录器的附加程序(在这种情况下为“MyLoggerName”)

我哪里错了?

4

1 回答 1

5

当您调用以下代码时

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

hierarchy.GetAppenders()实际上,您要求的数据与因为Hierarchyinherits完全相同的数据LoggerRepositorySkeleton,它实现ILoggerRepository了返回的类型Logger.Repository

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

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

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

于 2014-08-19T10:08:13.403 回答