1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-03-22 10:38:37 +00:00

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.
This commit is contained in:
sergei Trofimov 2018-04-30 13:28:53 +01:00 committed by Marc Bonnici
parent 7cf0b881c1
commit c1a0f842d0

View File

@ -225,15 +225,19 @@ class InitHandler(logging.handlers.BufferingHandler):
super(InitHandler, self).__init__(capacity) super(InitHandler, self).__init__(capacity)
self.targets = [] self.targets = []
def add_target(self, target): def emit(self, record):
if target not in self.targets: record.indent_level = _indent_level
self.targets.append(target) super(InitHandler, self).emit(record)
def flush(self): def flush(self):
for target in self.targets: for target in self.targets:
self.flush_to_target(target) self.flush_to_target(target)
self.buffer = [] self.buffer = []
def add_target(self, target):
if target not in self.targets:
self.targets.append(target)
def flush_to_target(self, target): def flush_to_target(self, target):
for record in self.buffer: for record in self.buffer:
target.emit(record) target.emit(record)
@ -250,7 +254,8 @@ class LineFormatter(logging.Formatter):
if self.usesTime(): if self.usesTime():
record.asctime = self.formatTime(record, self.datefmt) 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__ d = record.__dict__
parts = [] parts = []
for line in record.message.split('\n'): for line in record.message.split('\n'):