如何获取发生错误的行号而不是从Django中记录错误的行号

时间:2017-05-06 10:16:36

标签: django error-logging

我正在使用我的django项目中的日志来记录错误。但是,无论何时在任何行发生任何错误,日志中的行号都是记录错误的位置,而不是发生错误的位置 例如,在下面的代码中,如果在第3行发生错误(获取数据行1的代码),则在日志行号中将打印为7,其中记录发生。

def get_gender():
    try:
        # code to get data line 1
        # code to get data line 2
        # return data dictionary
    except Exception as e:
        logging.getLogger("error_logger").error(repr(e))
        return {}

以下是日志记录设置文件中格式化的代码。

formatters':{
        'large':{
            'format':'%(asctime)s  %(levelname)s  %(process)d  %(pathname)s  '+
            '%(funcName)s  %(lineno)d  %(message)s  '
        },

错误消息示例:

2017-05-06 15:20:07,065  ERROR  7000  /home/USER/ASonline/common/services/category_services.py  get_gender  7  IndexError('list index out of range',)

如何获取发生错误的行号,而不是记录错误的行号。

1 个答案:

答案 0 :(得分:0)

在python中查找行号需要bit of work。如果您真的对添加行号感兴趣,可以这样做:

minMonth = months[findMin(array, min, minMonth)];

但它并没有真正添加任何重要的东西。出现问题时你真正需要的是堆栈跟踪。

是最好的
from inspect import currentframe

logging.getLogger("error_logger").error("{0}: {1}".format(currentfram().lineno , repr(e)))