Open
Description
Is the following behavior expected?
Consider a root logger that filters on Level.WARNING
with a child logger that filters on Level.FINE
, but has no listeners.
Once the child logger accepts a message, it propagates up to the root logger and prints, despite being a lower level than the root logger's configuration.
import 'package:logging/logging.dart';
void main() {
hierarchicalLoggingEnabled = true;
Logger.root.level = Level.WARNING;
Logger.root.onRecord.listen((record) {
print('WARNING ONLY: ${record.message}');
});
final fineLogger = Logger('FINE LOGGER');
fineLogger.level = Level.FINE;
fineLogger.fine('FINE');
}
results in
$ dart logging_test.dart
WARNING ONLY: FINE
Of course, adjusting the root logger's handler to be like so can solve this problem:
Logger.root.onRecord.listen((record) {
if (record.level < Logger.root.level) return;
print('WARNING ONLY: ${record.message}');
});
But this feels redundant.
Is the original behavior expected?