python에서 exception stack을 출력하는 방법은 trackback class를 이용하면 간단하게 처리가능합니다.
아래 두가지 방법이 있습니다. 두가지 방법을 하나의 예제로 묶었습니다.
https://github.com/donarts/sourcecode/blob/main/python/example/4_printstack.py
실행 결과
1. print_exc Traceback (most recent call last): File "4_printstack.py", line 7, in <module> value = A[-1] IndexError: list index out of range 2. print_exception Traceback (most recent call last): File "4_printstack.py", line 7, in <module> value = A[-1] IndexError: list index out of range end of program
첫번째는 일반적으로 많이 사용하는 방법입니다. 해당 방법은 현재 기준으로 stack를 표시하기 때문에 사용하는것이 제한적입니다. 두번째는 변수를 받아서 다른곳에서 그때의 시점을 기록 할 수 있게 됩니다. 좀 복잡하더라도 두번째 방법이 범용성이 높습니다.
두가지 방법을 하더라도 로그에 기록되지는 않습니다. 로그로 기록하려면 string형태의 값이 있어야 합니다. 로그 기록은 아래 예제를 참고하세요
https://github.com/donarts/sourcecode/blob/main/python/example/4_printstack_log.py
실행결과
1. print Traceback (most recent call last): File "4_printstack_log.py", line 10, in <module> value = A[-1] IndexError: list index out of range 2. log print ['Traceback (most recent call last):', ' File "4_printstack_log.py", line 10, in <module>\n value = A[-1]', 'IndexError: list index out of range'] end of program
처음 예제를 응용하여 call stack을 list형태로 print 하는 방법을 알아봤으며, 두번째는 로그를 출력하도록 해봤습니다.
for line in ex_traceback: | |
print(line) | |
여기에서 print 대신 log 출력으로 바꾸어도 됩니다.
댓글 없음:
댓글 쓰기