Я хочу использовать вывод pprint, чтобы показать сложную структуру данных, но я хотел бы выводить его с помощью модуля регистрации, а не stdout.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
Я хочу использовать вывод pprint, чтобы показать сложную структуру данных, но я хотел бы выводить его с помощью модуля регистрации, а не stdout.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
pprint.pformat()был на той странице.
Ответы:
Используйте, pprint.pformatчтобы получить строку, а затем отправить ее в свою платформу ведения журнала.
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
AttributeError: 'function' object has no attribute 'pformat'почему?
from pprint import pprint,pformat тогда нужноlogging.debug((pformat(stuff))
Приведенное выше решение не совсем мне помогло, потому что я также использую форматировщик для добавления имени и имени уровня при регистрации. Выглядит немного неопрятно:
__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
\nсимвол в pformat. По крайней мере, так блок вместе.
pprint( {}, stream ), но нашел это довольно неудобным. я бы подумал, что что-то вродеspprintмогло быть лучше, чемpformat(как вc).