使用logging打印pprint的输出

我想使用pprint的输出显示一个复杂的数据结构,但我想输出它使用日志logging模块,而不是标准输出。

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

使用pprint.pformat获取一个string,然后将其发送到您的日志框架。

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

上面的解决scheme并没有完全削减我的,因为我也使用格式化程序来logging时添加名称和级别名称。 它看起来有点不整齐:

 __main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa', 'bbbbbbbbbbbbbbbbbbbb', 'cccccccccccccccccccc', 'dddddddddddddddddddd'] __main__ : DEBUG : Some other logging text 

可能有一个更优雅的解决scheme,但是这个:

 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