파이썬 예외를 기록하는 방법은?
Python에서 예외를 기록하려면 어떻게 해야 합니까?
몇 가지 옵션을 살펴보니 이 코드를 사용하여 실제 예외 세부 정보에 액세스할 수 있습니다.
import sys
import traceback
try:
1/0
except:
exc_type, exc_value, exc_traceback = sys.exc_info()
traceback.print_exception(exc_type, exc_value, exc_traceback)
어떻게든 그 끈을 받고 싶습니다.print_exception()내가 기록할 수 있도록 stdout에 던집니다.
을 보다.logging.exception(Python Logging 모듈)
import logging
def foo():
try:
some_code()
except:
logging.exception('')
이렇게 하면 현재 예외에 대한 추적을 자동으로 다시 가져오고 올바르게 기록할 수 있습니다.
Python 3.5에서는 exc_info 인수에서 예외 인스턴스를 전달할 수 있습니다.
import logging
try:
1/0
except Exception as e:
logging.error('Error at %s', 'division', exc_info=e)
당신의 질문에 대답하기 위해서 당신은 문자열 버전을 얻을 수 있습니다.print_exception()기능을 사용합니다.stdout으로 출력하지 않고 문자열 목록으로 추적 메시지를 반환하므로 원하는 작업을 수행할 수 있습니다.예를 들어,
import sys
import traceback
try:
asdf
except NameError:
exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
print ''.join('!! ' + line for line in lines) # Log it or whatever here
다음을 표시합니다.
!! Traceback (most recent call last):
!! File "<stdin>", line 2, in <module>
!! NameError: name 'asdf' is not defined
하지만 rlotun에서 제안하는 표준 파이썬 로깅 모듈을 사용하는 것을 확실히 추천합니다.설정이 가장 쉬운 것은 아니지만 사용자 지정이 가능합니다.
로그 예외는 로그 메시지에 exc_info=True 키워드 인수를 추가하는 것처럼 간단합니다. http://docs.python.org/2/library/logging.html 의 Logger.debug 항목을 참조하십시오.
예:
try:
raise Exception('lala')
except Exception:
logging.info('blah', exc_info=True)
출력(물론 로그 핸들러 구성에 저장됨):
2012-11-29 10:18:12,778 - root - INFO - <ipython-input-27-5af852892344> : 3 - blah
Traceback (most recent call last):
File "<ipython-input-27-5af852892344>", line 1, in <module>
try: raise Exception('lala')
Exception: lala
먼저 예외 조항에 적절한 예외 유형을 사용하는 것을 고려합니다.그런 다음 예외의 이름을 지정하면 다음과 같이 인쇄할 수 있습니다.
try:
1/0
except Exception as e:
print e
Python 버전에 따라 다음을 사용해야 합니다.
except Exception, e
언급URL : https://stackoverflow.com/questions/4508849/how-to-log-python-exception
'programing' 카테고리의 다른 글
| 자식 테마를 사용하기 위해 부모 테마의 폴더를 포함할 수 있습니까? (0) | 2023.09.17 |
|---|---|
| 브라우저가 400px 이하로 확장되지 않습니까? (0) | 2023.09.17 |
| 마지막 몇 개의 트랜잭션을 취소하거나 MariaDB에서 어제로 되돌릴 수 있습니까? (0) | 2023.09.17 |
| jquery 데이터 테이블 열 숨기기 (0) | 2023.09.17 |
| j과거 날짜를 방지하기 위한 날짜 선택기 쿼리 (0) | 2023.09.17 |