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