반응형
로깅을 사용하여 pprint 출력 인쇄
pprint의 출력을 사용하여 복잡한 데이터 구조를 보여주고 싶은데 stdout이 아닌 logging module을 사용하여 출력하고 싶습니다.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
이 명령을 사용하여 문자열을 가져온 다음 로깅 프레임워크로 보냅니다.
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
위의 솔루션은 포맷터를 사용하여 로깅할 때 이름과 수준 이름을 추가하고 있기 때문에 적합하지 않습니다.조금 정돈되지 않은 것 같습니다.
__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
다른 방법은 다음과 같습니다.json.dumps
와 함께indent
arg. 경우에 따라(로그 형식, 데이터 크기 등에 따라) 더 나은 출력을 제공할 수 있습니다.
logging.error('Malformed input data!')
logging.error(pformat(foo))
ERROR:root:Malformed input data!
ERROR:root:{'a': 1, 'b': 2, 'c': 'womp rat', 'd': 'turd sandwich'}
대.
logging.error('Malformed input data!')
logging.error(json.dumps(foo, indent=4))
ERROR:root:Malformed input data!
ERROR:root:{
"a": 1,
"b": 2,
"c": "womp rat",
"d": "turd sandwich"
}
언급URL : https://stackoverflow.com/questions/11093236/use-logging-print-the-output-of-pprint
반응형
'programing' 카테고리의 다른 글
SQL Server 2008 백업 오류 - 운영 체제 오류 5(이 오류에 대한 텍스트를 검색하지 못했습니다.이유: 15105) (0) | 2023.07.19 |
---|---|
Excel VBA - 순차적이지 않은 열을 여러 개 선택합니다. (0) | 2023.07.19 |
중복된 '콘텐츠' 항목이 포함되었습니다..NET SDK에는 기본적으로 프로젝트 디렉토리의 '콘텐츠' 항목이 포함되어 있습니다. (0) | 2023.07.19 |
WSGI와 CGI는 쉬운 영어로 무엇입니까? (0) | 2023.07.19 |
Ionic2 오류: "스토리지 제공자 없음" (0) | 2023.07.19 |