Chúng ta hãy tạo một stacktrace phức tạp, để chứng minh rằng chúng ta có được stacktrace đầy đủ:
def raise_error():
raise RuntimeError('something bad happened!')
def do_something_that_might_error():
raise_error()
Ghi nhật ký stacktrace đầy đủ
Một cách thực hành tốt nhất là thiết lập một logger cho mô-đun của bạn. Nó sẽ biết tên của mô-đun và có thể thay đổi cấp độ (trong số các thuộc tính khác, chẳng hạn như trình xử lý)
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
Và chúng ta có thể sử dụng bộ ghi này để nhận lỗi:
try:
do_something_that_might_error()
except Exception as error:
logger.exception(error)
Nhật ký nào:
ERROR:__main__:something bad happened!
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 2, in do_something_that_might_error
File "<stdin>", line 2, in raise_error
RuntimeError: something bad happened!
Và do đó, chúng tôi nhận được đầu ra giống như khi chúng tôi gặp lỗi:
>>> do_something_that_might_error()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in do_something_that_might_error
File "<stdin>", line 2, in raise_error
RuntimeError: something bad happened!
Chỉ lấy chuỗi
Nếu bạn thực sự chỉ muốn chuỗi, traceback.format_exc
thay vào đó hãy sử dụng hàm, chứng minh ghi nhật ký chuỗi ở đây:
import traceback
try:
do_something_that_might_error()
except Exception as error:
just_the_string = traceback.format_exc()
logger.debug(just_the_string)
Nhật ký nào:
DEBUG:__main__:Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 2, in do_something_that_might_error
File "<stdin>", line 2, in raise_error
RuntimeError: something bad happened!
log_error(err)
chức năng.