问题:使用日志记录打印pprint的输出
我想使用pprint的输出来显示复杂的数据结构,但是我想使用日志记录模块而不是stdout来输出它。
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
回答 0
使用pprint.pformat
得到一个字符串,然后将其发送到您的日志框架。
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
回答 1
上述解决方案没有相当,因为我还使用格式化的时候记录添加名称和levelname削减对我来说。看起来有点不整洁:
__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