Ответ 1
Используйте pprint.pformat
чтобы получить строку, а затем отправьте ее в свою среду ведения журналов.
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
Я хочу использовать вывод pprint для отображения сложной структуры данных, но я хотел бы выводить его с помощью модуля ведения журнала, а не stdout.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
Используйте pprint.pformat
чтобы получить строку, а затем отправьте ее в свою среду ведения журналов.
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
Решение выше не совсем разрешило его для меня, потому что я также использую форматтер для добавления имени и имени уровня при регистрации. Это выглядит немного неопрятным:
__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