[python] 로깅 사용 pprint 출력 인쇄

pprint의 출력을 사용하여 복잡한 데이터 구조를 표시하고 싶지만 stdout이 아닌 로깅 모듈을 사용하여 출력하고 싶습니다.

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



답변

사용 pprint.pformat하여 문자열을 가져온 다음 로깅 프레임 워크로 보냅니다.

from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))


답변

이 솔루션은 위하지 않았다 나는 또한 때 로깅 이름과 levelname을 추가 할 포맷을 사용하고 있기 때문에 나를 위해 그것을 잘라. 약간 어수선 해 보입니다.

__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


답변