Je veux utiliser la sortie de pprint pour montrer une structure de données complexe, mais je voudrais la sortir en utilisant le module de journalisation plutôt que stdout.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
Utilisation pprint.pformat
pour obtenir une chaîne, puis l'envoyer à votre infrastructure de journalisation.
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
La solution ci-dessus ne l'a pas tout à fait coupée pour moi car j'utilise également un formateur pour ajouter un nom et un nom de niveau lors de la connexion. Ça a l'air un peu désordonné:
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
'bbbbbbbbbbbbbbbbbbbb',
'cccccccccccccccccccc',
'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text
Il peut y avoir une solution plus élégante, mais celle-ci:
for line in pprint.pformat(ds).split('\n'):
logging.debug(line)
produit quelque chose d'un peu plus agréable:
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
__main__ : DEBUG : 'bbbbbbbbbbbbbbbbbbbb',
__main__ : DEBUG : 'cccccccccccccccccccc',
__main__ : DEBUG : 'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text