pprintの出力を使用して複雑なデータ構造を表示したいが、stdoutではなくloggingモジュールを使用して出力したいと思う。loggingを使用してpprintの出力を出力
ds = [{'hello': 'there'}]
logging.debug(pprint.pprint(ds)) # outputs as STDOUT
pprintの出力を使用して複雑なデータ構造を表示したいが、stdoutではなくloggingモジュールを使用して出力したいと思う。loggingを使用してpprintの出力を出力
ds = [{'hello': 'there'}]
logging.debug(pprint.pprint(ds)) # outputs as STDOUT
pprint.pformat
を使用して文字列を取得し、ログフレームワークに送信します。私もログインするときに名前とlevelnameを追加するフォーマッタを使用していますので、
from pprint import pprint, pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
迅速な対応に感謝します! – yee379
デバッグが終了した後にこのコードを削除しない場合は、出力を使用しないときにpformatを実行しないようにするには、 "if Logger.isEnabledFor(logging.DEBUG):" /docs.python.org/2/library/logging.html#logging.Logger.isEnabledFor –
@EdBrannin pformatは、すべてのDEBUGログステートメントに条件を追加するのに苦労するほどのオーバーヘッドを追加しますか? – undefinedvariable
上記の溶液はかなりは私のためにそれをカットしていませんでした。よりエレガントな解決策があるかもしれません
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
'bbbbbbbbbbbbbbbbbbbb',
'cccccccccccccccccccc',
'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text
が、この:それは少しだらしない見える前にドキュメントを読むためにわざわざしてください
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
__main__ : DEBUG : 'bbbbbbbbbbbbbbbbbbbb',
__main__ : DEBUG : 'cccccccccccccccccccc',
__main__ : DEBUG : 'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text
人間が消費するのに最適です。ログをlogstashなどのツールに配送していて、 1つのメッセージとして送信される単一の複数行メッセージ –
は、ロガー設定のハンドラ/フォーマッタレベルできれいに印刷する方法はありますか?コンソールにはかなり印刷するが、ファイルにはフォーマットされていない有効なユースケースのようです –
:
は少しよりよい何かを作り出しますこのような質問をする。それはそこにある。また、より多くの回答を受け入れる必要があります。 –
私はドキュメントを見て、 'pprint({}、stream)'を見つけましたが、むしろそれはやや厄介でした。私は 'spprint'のようなものが' pformat'( 'c'のような)よりも良いかもしれないと思ったでしょう。 – yee379
'pprint.pformat()'がそのページにありました。 –