From c1a0f842d000c7bc062872da7cc838a8644edc53 Mon Sep 17 00:00:00 2001 From: sergei Trofimov Date: Mon, 30 Apr 2018 13:28:53 +0100 Subject: [PATCH] utils/log: maintain indent for buffered records Ensure buffered records are indented properly by saving the indent level at the time the record was generated as part of the record, and preferring that over the current indent level inside LineFormatter. --- wa/utils/log.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/wa/utils/log.py b/wa/utils/log.py index e554a109..c59ab2f5 100644 --- a/wa/utils/log.py +++ b/wa/utils/log.py @@ -225,15 +225,19 @@ class InitHandler(logging.handlers.BufferingHandler): super(InitHandler, self).__init__(capacity) self.targets = [] - def add_target(self, target): - if target not in self.targets: - self.targets.append(target) + def emit(self, record): + record.indent_level = _indent_level + super(InitHandler, self).emit(record) def flush(self): for target in self.targets: self.flush_to_target(target) self.buffer = [] + def add_target(self, target): + if target not in self.targets: + self.targets.append(target) + def flush_to_target(self, target): for record in self.buffer: target.emit(record) @@ -250,7 +254,8 @@ class LineFormatter(logging.Formatter): if self.usesTime(): record.asctime = self.formatTime(record, self.datefmt) - indent = _indent_width * _indent_level + indent_level = getattr(record, 'indent_level', _indent_level) + indent = _indent_width * indent_level d = record.__dict__ parts = [] for line in record.message.split('\n'):