pprint의 출력을 사용하여 복잡한 데이터 구조를 표시하고 싶지만 stdout이 아닌 로깅 모듈을 사용하여 출력하고 싶습니다.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
pprint의 출력을 사용하여 복잡한 데이터 구조를 표시하고 싶지만 stdout이 아닌 로깅 모듈을 사용하여 출력하고 싶습니다.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
pprint.pformat()
그 페이지에 있었다.
답변:
사용 pprint.pformat
하여 문자열을 가져온 다음 로깅 프레임 워크로 보냅니다.
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
AttributeError: 'function' object has no attribute 'pformat'
이유는 어떤 생각을?
from pprint import pprint,pformat
그때 필요했습니다logging.debug((pformat(stuff))
이 솔루션은 위하지 않았다 꽤 나는 또한 때 로깅 이름과 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
\n
문자를 추가하는 것입니다. 적어도 이런 식으로 블록이 함께 있습니다.
pprint( {}, stream )
지만 다소 어색하다는 것을 알았습니다. 나는 같은spprint
것이pformat
(처럼c
) 보다 더 좋았을 것이라고 생각 했을 것 입니다.