Log4j2 - 以编程方式获取附加过滤器

Log4j2 - Get appender filter programmatically

我目前正在将一个项目从使用 log4j1 升级到 log4j2。 代码中有些地方正在调用 appender.getFilter(),使用新的 API 不再可用。 旧代码使用 org.apache.log4j.Appender 我现在正在使用 org.apache.logging.log4j.core.Appender.

查看 log4j2 文档和代码,我可以看到可以将过滤器添加到 Appender,但我找不到如何获取它们。

有没有办法以编程方式获取已应用于 Appender 的过滤器?

getFilter() 仍然存在,但已从 Appender 接口中删除:不需要 appender 来支持过滤器,尽管所有那些标准的都支持。

要检索过滤器,您只需转换为 Filterable:

final Filter filter = appender instanceof Filterable ?
                      ((Filterable) appender).getFilter() :
                      null;

备注:在 Log4j 中 2.x 过滤器可以出现在四个不同的位置(参见 documentation)。