aboutsummaryrefslogtreecommitdiff
path: root/wa/utils
diff options
context:
space:
mode:
authorsergei Trofimov <sergei.trofimov@arm.com>2018-04-30 13:28:53 +0100
committerMarc Bonnici <marc.bonnici@arm.com>2018-05-09 15:06:31 +0100
commitc1a0f842d000c7bc062872da7cc838a8644edc53 (patch)
tree116ccc1fa579d93aca7899b012b466fef745a620 /wa/utils
parent7cf0b881c194e99aa4cfc830f6e59d4219a6cb1b (diff)
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.
Diffstat (limited to 'wa/utils')
-rw-r--r--wa/utils/log.py13
1 files 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'):