首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用它在Python中传播的方法参数覆盖错误日志记录?

如何用它在Python中传播的方法参数覆盖错误日志记录?
EN

Stack Overflow用户
提问于 2016-11-30 11:48:15
回答 1查看 191关注 0票数 1

我想将触发错误级别日志的方法的参数注入日志。

我研究了这个问题,我认为检查库可能是获得方法的论据的一个好选择:Getting method parameter names in python

代码语言:javascript
复制
import inspect

def add(x,y):
    frame = inspect.currentframe()
    try:
        print(frame.f_locals)
    finally:
        del frame
    return x+y

Running: add(4,5)
Returns: {'frame': , 'y': 5, 'x': 4}

尽管理想情况下,我只想调用上面的检查代码来自动地将信息添加到错误级别日志中,并且只有当它们被调用时才会覆盖错误日志。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-30 13:16:21

这是一个有趣的问题。基本上你可以:

结果如下:

代码语言:javascript
复制
from functools import wraps
import logging
import inspect

# save the old logging.error function
__logging_error = logging.error

@wraps(logging.error)
def error(msg, *args, **kwargs):
    __logging_error(msg, *args, **kwargs)
    caller = inspect.stack()[1]
    caller_frame = caller[0]
    __logging_error('args: %s' % caller_frame.f_locals)

# overwrite the default logging.error
logging.error = error

现在代码:

代码语言:javascript
复制
def add(x, y):
    logging.error('this is an error')
    return x + y

add(4, 5)

产出:

代码语言:javascript
复制
ERROR:root:this is an error
ERROR:root:args: {'y': 5, 'x': 4}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40887624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档