在编写框架代码时,我经常希望记录调用者的行号和文件名。例如,如果我检测到framerwork级别API调用的不正确使用,我想记录这个。。。。不是框架内错误,而是“调用方错误”。你知道吗
这只有在编写使用内省的低级库和系统时才起作用。你知道吗
有没有办法让记录器记录“一级以上”?我可以创建一个定制的日志记录,然后修改它,并在安装的记录器中使用它吗?想弄清楚。你知道吗
例如:
def set(self, x):
if x not in self._cols:
log.error("Invalid attribute for set", stack_level=-1)
好吧,我想出来了。你知道吗
首先,您需要使用inspect获取框架。然后在日志中用信息修改extra=参数。但是您还必须重写makerecord,以防止不适当的保护阻止log使用文件名和行号重写。你知道吗
奇怪的是,当extra和sinfo的默认值为none时(就像在最初的定义中那样),我无法使它工作。也许myMakeRecord应该使用*args。。。。但这需要抓住
extra = args[9]
。。。这很奇怪。。。。但可能不那么糟糕(更可能是未来的证明)。你知道吗相关问题 更多 >
编程相关推荐