2008-10-10 2 views
35

사용 무언가 :파이썬 로깅 프레임 워크를 사용하여 traceback을 사용하여 경고 또는 정보 수준에서 예외를 어떻게 기록합니까? 이 같은

try: 
    # Something... 
except Exception as excep: 
    logger = logging.getLogger("component") 
    logger.warning("something raised an exception: " + excep) 
    logger.info("something raised an exception: " + excep) 

나는 오히려 오류가 아닙니다 나의 특별한 경우에 오류 수준의 원인에 그것을 가지고하지 않을 것입니다.

답변

46

:

검사하는 kwargs 세 가지 키워드 인자가 있습니다

: exc_info, stack_infoextra.

exc_info이 false로 평가되지 않으면 예외 정보가 로깅 메시지에 추가됩니다. 예외 튜플 (sys.exc_info()에 의해 반환 된 형식) 또는 예외 인스턴스가 제공되면 사용됩니다. 그렇지 않은 경우 sys.exc_info()이 호출되어 예외 정보를 가져옵니다.

그렇게 : 작동

logger.warning("something raised an exception:", exc_info=True) 
-2

Logger.exception을 사용해보세요.

Logger.exception()은 Logger.error()와 비슷한 메시지 을 생성합니다. 의 차이점은 Logger.exception()이 과 함께 스택 추적을 덤프한다는 것입니다. 예외 처리기에서만이 메서드를 호출하십시오.

+10

나는 영업 이익은 그가 레벨 오류에 기록하지 않았다 믿는다

logger.critical("caught exception, traceback =", exc_info=True) 
fholo

-5

Logger.exception()을 사용하십시오.

try: 
    #Something... 
except BaseException, excep: 
    logger = logging.getLogger("component") 
    logger.exception("something raised an exception") 
-3

상당히 잘 설명되어 있습니다. here.

꽤 가까이 있습니다. 당신은

logging.warning("something raised an exception: " + excep) 

과 기본을 사용하거나 링크 된 페이지의 예제의 일부를 따라 여러 대상 및 필터 수준보다 정교한 얻을 수있는 옵션이 있습니다.

+1

그러나 추적을 기록하지 않습니다. logging.exception()을 사용하십시오. –

+2

logging.exception은 OP가 원하지 않는 '오류'수준의 메시지를 넣습니다. –

-1

경우에 따라 warnings 라이브러리를 사용할 수 있습니다. 경고가 표시되는 방식을 매우 세부적으로 제어 할 수 있습니다. logging documentation에서

4
여기

하나 (파이썬 2.6.5 참조).

# basicConfig have to be the first statement 
logging.basicConfig(level=logging.INFO) 
logger = logging.getLogger("componet") 
try: 
    raise BaseException 
except BaseException: 
    logger.warning("something raised an exception: ",exc_info=True) 
    logger.info("something raised an exception: " ,exc_info=True) 
-1

나는 다음과 같은 코드와 예외 블록에 로그 메시지를 표시 할 수 있었다.
관련 문제