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))
ロギング時に名前とレベル名を追加するためにフォーマッターも使用しているため、上記のソリューションは私にとってはうまくいきませんでした。少し乱雑に見えます:
__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