Подтвердить что ты не робот

Использовать протоколирование печати вывода pprint

Я хочу использовать вывод pprint для отображения сложной структуры данных, но я хотел бы выводить его с помощью модуля ведения журнала, а не stdout.

ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
4b9b3361

Ответ 1

Используйте pprint.pformat чтобы получить строку, а затем отправьте ее в свою среду ведения журналов.

from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))

Ответ 2

Решение выше не совсем разрешило его для меня, потому что я также использую форматтер для добавления имени и имени уровня при регистрации. Это выглядит немного неопрятным:

__main__    : DEBUG   : ['aaaaaaaaaaaaaaaaaaaa',
'bbbbbbbbbbbbbbbbbbbb',
'cccccccccccccccccccc',
'dddddddddddddddddddd']
__main__    : DEBUG   : Some other logging text

Может быть более элегантное решение, но это:

for line in pprint.pformat(ds).split('\n'):
    logging.debug(line)

создает что-то немного приятнее:

__main__    : DEBUG   : ['aaaaaaaaaaaaaaaaaaaa',
__main__    : DEBUG   :  'bbbbbbbbbbbbbbbbbbbb',
__main__    : DEBUG   :  'cccccccccccccccccccc',
__main__    : DEBUG   :  'dddddddddddddddddddd']
__main__    : DEBUG   : Some other logging text