参数优先级
FileAppender
中options的优先级
为什么会有优先级
当开发者添加FileAppender
时,可能出现多个FileAppender
绑定到一个Logger
的情况,此时如果每个FileAppender
被添加时都需要传入options
参数,会使代码变得复杂难读,因此,当多个FileAppender
指向同一文件时开发者可以只设置其中一个FileAppender
的options
,而不是每次绑定FileAppender
时都传入options
。
总结
如果多个FileAppender
指向同一个日志文件,则只需要设置其中一个的options
参数
typescript
class Example1 {
private logger_a: Logger = LogManager.getLogger(this).addFileAppender('/path/to_file.log', 'main',Level.INFO, {
useWorker: true
});
}
class Example2 {
// 此处不需要传入options,配置将与Example1中的logger_a相同
private logger_b: Logger = LogManager.getLogger(this).addFileAppender('/path/to_file.log', 'main',Level.INFO);
}
日志等级的优先级
如果您已经阅读完快速开始,您应该注意到了我们可以在Logger
和Appender中都设置一个日志输出等级,因此我们需要对此进行特别讲解。
为什么会有优先级
Log4a的日志消息会在Logger
中进行构建,在构建日志消息之前,会由Logger
对日志等级进行过滤,当日志等级高于Logger
中被设置的等级时,该条日志消息将被忽略,进一步导致Logger绑定的FileAppender
和ConsoleAppender
均无法接受到这条日志。
相反地,如果日志等级低于Logger
日志等级,则这条日志消息会进一步交给FileAppender
和ConsoleAppender
进行过滤。
总结
日志消息首先被Logger
过滤后才会交给Appender
进行过滤,因此Logger
的日志等级要优先于Appender