分享一个跑项目时DEBUG的装饰器

通用模块

Django CBV 尝试抓错的装饰器 可追踪至出错的函数,定位至出错的那一行,比自带的traceback更清晰一些 代码 import logging err_logger = logging.getLogger('development_server_errprint') def try_debug(func): @wraps(func) def wrap(args, kwargs): try: result = func(args, kwargs) # 尝试得出结果,如果有错误,会调到except return result except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() func_name = func.qualname func_file = func.code.co_filename errmsg = '%s:%s' % (str(exc_type).split('.')[-1].replace("'>", ''), str(e)) err_logger.debug("[错误类型]: %s\n[错误消息]: %s\n错误文件: %s-->%s\n错误行号: %s" % (exc_type, e, func_file, func_name, exc_tb.tb_next.tb_lineno)) return ValueError(errmsg) # 自行替换自家的Exception类 return wrap

from app.login_views import BaseView class Ttt(BaseView):

@try_debug
def get(self, request):
    return 1 / 0

效果

[开发错误调试] -------: [错误类型]: <class 'ZeroDivisionError'> [错误消息]: division by zero


错误的地方就是1/0,正好是代码文的第6行

第一次发文,好的不好的地方请见谅

评论 1