综述:
程序员必知必会的一项技能之一是记录日志和跟踪异常。Python中提供了logging和traceback两个模块,用于实现这些目的。logging模块可以用于记录信息、警告和错误等不同级别的日志,并可以将日志记录到文件中。而traceback模块则可以获取异常的堆栈信息,帮助开发者定位和解决问题。
步骤:
以下是Python中使用logging和traceback模块记录日志和跟踪异常的步骤。
1.导入logging和traceback模块:
import logging
import traceback
2.配置logging模块:
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename='example.log',
filemode='w')
上述代码中,设置了日志等级为DEBUG,日志格式为包括时间、日志级别和消息,时间格式为年-月-日 小时:分钟:秒,日志记录到文件example.log中。
3.使用logging模块记录日志:
def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
logging.error("division by zero")
else:
logging.debug("division result is: {}".format(result))
return result
上述代码中,记录了除零错误的日志,并在正常情况下记录了计算结果。
4.使用traceback模块跟踪异常:
try:
# some operation that may raise an exception
except Exception as e:
logging.error("Unexpected error: {}".format(traceback.format_exc()))
上述代码中,将异常堆栈信息记录在日志中,以便开发者可以追踪并解决问题。
示例1:
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename='example.log',
filemode='w')
def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
logging.error("division by zero")
else:
logging.debug("division result is: {}".format(result))
return result
if __name__ == '__main__':
divide(10, 0)
上述代码中,除以零将会引发一个错误,并记录在日志中。
输出:
ERROR:root:division by zero
示例2:
import logging
import traceback
import sys
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename='example.log',
filemode='w')
def risky():
raise Exception("oops")
def foo():
try:
risky()
except Exception as e:
logging.error("Unexpected error: {}".format(traceback.format_exc()))
if __name__ == '__main__':
foo()
上述代码中,risky()函数引发异常,并使用traceback模块记录日志。
输出:
ERROR:root:Unexpected error: Traceback (most recent call last):
File "test.py", line 11, in foo
risky()
File "test.py", line 6, in risky
raise Exception("oops")
Exception: oops
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中使用logging和traceback模块记录日志和跟踪异常 - Python技术站