Ich möchte die Ausgabe von pprint verwenden, um eine komplexe Datenstruktur anzuzeigen, aber ich möchte sie lieber über das Protokollierungsmodul als über stdout ausgeben.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
pprint( {}, stream )
, fand es aber ziemlich umständlich. Ich hätte gedacht, so etwasspprint
wäre schöner gewesen alspformat
(wie inc
).pprint.pformat()
war auf dieser Seite.Antworten:
Verwenden Sie
pprint.pformat
diese Option , um eine Zeichenfolge abzurufen und diese dann an Ihr Protokollierungsframework zu senden.quelle
AttributeError: 'function' object has no attribute 'pformat'
eine Idee warum?from pprint import pprint,pformat
dannlogging.debug((pformat(stuff))
Die obige Lösung hat es für mich nicht ganz gekürzt, da ich beim Protokollieren auch einen Formatierer verwende, um Namen und Ebenennamen hinzuzufügen. Es sieht etwas unordentlich aus:
Es mag eine elegantere Lösung geben, aber diese:
produziert etwas ein bisschen schöner:
quelle
\n
dem pformat nur ein zusätzliches Zeichen hinzuzufügen. Zumindest so ist der Block zusammen.