我正在用python制作一个日志模块,它向服务器报告运行时发生的每个异常,因此在每个函数中我必须编写:
def a_func():
try:
#stuff here
pass
except:
Logger.writeError(self.__class__.__name__, inspect.stack()[1][3],\
tracer(self, vars()))
如您所见,我使用vars()函数来获取导致异常的变量。我读到了关于装饰师的文章,我决定使用它们:
def flog(func):
def flog_wrapper(*args, **kwargs):
try:
func(*args, **kwargs)
except Exception as e:
print "At flog:", e
#self.myLogger.writeError(self.__class__.__name__, inspect.stack()[1][3], tracer(self, vars()))
return flog_wrapper
问题是我无法访问原始函数的(func)变量(vars())。有没有办法在decorator函数中访问它们?你知道吗
您不需要使用
vars()
。异常的回溯具有您需要的一切:回溯包含一系列链接的执行帧;每个帧都有一个对该帧中使用的局部变量的引用。你知道吗
您确实非常希望清理对回溯的引用;因为回溯包含包装器函数框架,所以您有一个循环引用,最好尽早中断。你知道吗
相关问题 更多 >
编程相关推荐