129

pprint の出力を使用して複雑なデータ構造を表示したいのですが、stdout ではなく logging モジュールを使用して出力したいと考えています。

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

3 に答える 3

266

を使用pprint.pformatして文字列を取得し、ログ フレームワークに送信します。

from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
于 2012-06-19T01:27:03.697 に答える
22

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

__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
于 2014-01-09T15:33:53.167 に答える