Python Glossary English

все 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Сообщить о неточности