Log4net 如何从appender中删除最后一个筛选器?

Log4net 如何从appender中删除最后一个筛选器?,log4net,log4net-appender,Log4net,Log4net Appender,如何在运行时从追加器中删除最后一个筛选器?我可以清除过滤器,也可以添加过滤器,但这两种方法都会改变私有属性m_tailFilter,因此,当我将上一个过滤器之前的下一个属性设置为null时,在之后添加新过滤器不起作用 appender.AddFilter(filter); // works fine appender.ClearFilters(); // works fine and adding filter again also works var lastFilter = append

如何在运行时从追加器中删除最后一个筛选器?我可以清除过滤器,也可以添加过滤器,但这两种方法都会改变私有属性
m_tailFilter
,因此,当我将上一个过滤器之前的下一个属性设置为null时,在之后添加新过滤器不起作用

appender.AddFilter(filter); // works fine

appender.ClearFilters(); // works fine and adding filter again also works

var lastFilter = appender.FilterHead; // save previously last filter
appender.AddFilter(filter); // works fine
filter.Next = null; // works fine, i.e. removes the last filter
appender.AddFilter(filter); // doesn't work, i.e. this filter is ignored

我会把我带来的东西贴在这里。我不喜欢它,它让人感觉很不舒服,我认为应该有更好的方法,但它似乎适合我的场景

filter.Next = null;
var f = appender.FilterHead;
appender.ClearFilters();
appender.AddFilter(f);
因此,在从链中移除最后一个过滤器后,清除所有过滤器并再次添加头部,这将正确设置尾部