我正在使用我的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',)
如何获取发生错误的行号,而不是记录错误的行号。
答案 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)))