使用日志记录打印pprint的输出

时间:2012-06-19 01:25:13

标签: python logging pprint

我想使用pprint的输出来显示复杂的数据结构,但我想使用日志模块而不是stdout输出它。

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

2 个答案:

答案 0 :(得分:156)

使用pprint.pformat获取字符串,然后将其发送到日志框架。

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

答案 1 :(得分:14)

上面的解决方案并没有完全为我剪切它,因为我还使用格式化程序在记录时添加名称和级别名称。它看起来有点凌乱:

__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