Skip to content

参数优先级

FileAppender中options的优先级

为什么会有优先级

当开发者添加FileAppender时,可能出现多个FileAppender绑定到一个Logger的情况,此时如果每个FileAppender被添加时都需要传入options参数,会使代码变得复杂难读,因此,当多个FileAppender指向同一文件时开发者可以只设置其中一个FileAppenderoptions,而不是每次绑定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绑定的FileAppenderConsoleAppender均无法接受到这条日志。

相反地,如果日志等级低于Logger日志等级,则这条日志消息会进一步交给FileAppenderConsoleAppender进行过滤。

总结

日志消息首先被Logger过滤后才会交给Appender进行过滤,因此Logger的日志等级要优先于Appender

以 Apache License 2.0 许可证发布