все Python 3loggingпонятие
logging.BufferingFormatter
форматирование
Форматтер для пачки записей: склеивает их строки и добавляет заголовок и подвал. Нужен, когда лог отправляют одним сообщением.
Синтаксис
bf = logging.BufferingFormatter(linefmt=None); text = bf.format(records)
Записи склеиваются без разделителя: по умолчанию format([a, b]) даёт 'ab', а не две строки, так что перевод строки надо вписать в linefmt самому. Заголовок и подвал по умолчанию пустые — formatHeader() и formatFooter() переопределяют в подклассе. Сам logging его нигде не вызывает: даже MemoryHandler им не пользуется, пачку форматируют вручную.
Примеры
import logging
recs = [logging.makeLogRecord({'msg': m}) for m in ('a', 'b')]
print(repr(logging.BufferingFormatter().format(recs))) # → 'ab' — без перевода строки
import logging
class Report(logging.BufferingFormatter):
def formatHeader(self, records):
return f'Записей: {len(records)}\n'
line = logging.Formatter('%(levelname)s %(message)s\n')
recs = [logging.makeLogRecord({'msg': 'диск', 'levelname': 'WARNING'}),
logging.makeLogRecord({'msg': 'сеть', 'levelname': 'ERROR'})]
print(Report(line).format(recs), end='') # → Записей: 2 / WARNING диск / ERROR сеть
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности