Pprintの出力を使用して複雑なデータ構造を表示したいのですが、stdoutではなくloggingモジュールを使用して出力したいと思います。
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
つかいます - pprint.pformat
文字列を取得し、それをロギングフレームワークに送信します。
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
上記の解決策はquiteをカットしませんでした。ロギング時に名前とレベル名を追加するためにフォーマッターも使用しているためです。少しだらしないように見えます:
__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