Log4j v1中Logger“包含”的Appenders集合由什么定义?
Log4j v1 中
Logger.getAllAppenders() 返回集合的定义说明 核心定义
Logger.getAllAppenders() 返回的仅为当前Logger实例直接关联(显式添加)的Appender集合,这里的"包含"特指「当前Logger自身显式配置绑定的Appender」,不涉及父/子Logger的Appender继承逻辑。
父/子Logger的Appender归属问题
- 子Logger不会包含父Logger的Appenders:
子Logger的getAllAppenders()仅返回自己直接添加的Appender。需注意:子Logger默认会继承父Logger的Appender用于日志输出(可通过setAdditivity(false)关闭此行为),但这是日志事件的传递逻辑,和getAllAppenders()的返回值无关联。 - 父Logger不会包含子Logger的Appenders:
父Logger的getAllAppenders()仅返回自身直接绑定的Appender,完全不涉及子Logger的任何配置。
依据说明
Log4j v1的Category(Logger的父类)内部通过Hashtable存储自身的Appender实例,getAllAppenders()方法直接返回该哈希表的elements()枚举,源码逻辑明确限定了仅返回当前实例的Appender集合。
内容的提问来源于stack exchange,提问作者Borea Deitz
相关产品推荐
相关产品推荐

