log4net - 获取特定于一个记录器的appender

时间:2014-08-18 13:27:33

标签: logging log4net log4net-appender

我正在寻找一种方法来将所有appender连接到一个记录器实例。

我试过了:

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

根据文档,它返回当前配置的所有记录器的所有appender。

当我尝试这个时:

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

我得到了相同的结果。

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

我哪里错了?

1 个答案:

答案 0 :(得分:4)

当您拨打以下代码时

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

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

然而,您可以获得&#34;第一级&#34;的列表通过使用Logger命名空间中的Hierarchy类来执行appenders:

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

您必须处理特殊情况,例如bufefring或从那里过滤appender