Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带装饰器的python/django日志记录_Python_Django_Logging_Wrapper - Fatal编程技术网

带装饰器的python/django日志记录

带装饰器的python/django日志记录,python,django,logging,wrapper,Python,Django,Logging,Wrapper,我想在每个函数上放置一个decorator来记录函数中发生的一切。我制作了一个包装器函数和decorator,用decorator记录函数 视图.py def func_detail(func): @wraps(func) def func_wrapper(*args, **kwargs): r = func(*args, **kwargs) logging.getLogger(__name__) logging.basicC

我想在每个函数上放置一个decorator来记录函数中发生的一切。我制作了一个包装器函数和decorator,用decorator记录函数

视图.py

def func_detail(func):
   @wraps(func)
     def func_wrapper(*args, **kwargs):
         r = func(*args, **kwargs)
         logging.getLogger(__name__)
         logging.basicConfig(filename='test.log', filemode='a',
                             format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
                              datefmt='%H:%M:%S',
                              level=logging.DEBUG)
         return r
     return func_wrapper

class UsersViewSet(viewsets.ViewSet):
    @func_detail
    def list(self, request):
        queryset = Mytable.objects.all()
        if request.GET.get('name'):
            queryset = queryset.filter(name=request.GET.get('name'))
        serializer = CheckSerializer(queryset, many=True)
        logging.info("GET request and returned response")
        return Response(serializer.data)

问题是此代码中没有创建日志文件。另外,它是在另一个项目上创建的,但没有在日志文件(空日志文件)中打印任何内容。我想在日志文件中打印所有正在发生的事情的消息,但这似乎不起作用。Plz帮助。

装饰器内部函数应该返回带有args和kwargs的外部函数,您的装饰器问题将得到解决,但另一个问题是Django无法stdr此装饰视图函数的控制台输出

def func_detail(func):
    @wraps(func)
    def func_wrapper(*args, **kwargs):
        logging.getLogger(__name__)
        ----
        return func(*args, **kwargs)
    return func_wrapper

请从格式化和正确缩进代码开始。我做到了。谢谢你让我知道@谢谢你!我还必须跟踪发生在模型上的更改或修改,以及更改为什么的内容。。我正在使用audit_log,但它并没有真正的帮助。我建议使用Django logger作为模型和有关日志的所有内容…谢谢,我会看到这一点并让您知道!