Karmaşık bir veri yapısını göstermek için pprint'in çıktısını kullanmak istiyorum, ancak bunu standart çıktı yerine günlükleme modülünü kullanarak çıkarmak istiyorum.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
Karmaşık bir veri yapısını göstermek için pprint'in çıktısını kullanmak istiyorum, ancak bunu standart çıktı yerine günlükleme modülünü kullanarak çıkarmak istiyorum.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
pprint.pformat()
o sayfadaydı.
Yanıtlar:
pprint.pformat
Bir dize almak için kullanın ve ardından bunu günlük çerçevenize gönderin.
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
AttributeError: 'function' object has no attribute 'pformat'
fikrim var neden?
from pprint import pprint,pformat
O zaman ihtiyacım vardılogging.debug((pformat(stuff))
Solüsyon yukarıdaki vermedi oldukça ben de zaman günlük adını ve levelname eklemek için bir biçimlendirici kullanıyorum çünkü benim için kesti. Biraz dağınık görünüyor:
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
'bbbbbbbbbbbbbbbbbbbb',
'cccccccccccccccccccc',
'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text
Daha zarif bir çözüm olabilir, ancak bu:
for line in pprint.pformat(ds).split('\n'):
logging.debug(line)
biraz daha hoş bir şey üretir:
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
__main__ : DEBUG : 'bbbbbbbbbbbbbbbbbbbb',
__main__ : DEBUG : 'cccccccccccccccccccc',
__main__ : DEBUG : 'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text
\n
karakter eklemek oldu. En azından bu şekilde blok bir arada.
pprint( {}, stream )
, ancak oldukça garip buldum. Böyle bir şeyin (içinde olduğu gibi )spprint
daha güzel olabileceğini düşünürdüm .pformat
c