如何使用Django Rest Framework在Django中进行操作日志记录

时间:2017-01-09 20:53:32

标签: python django logging django-admin django-rest-framework

大家好日子!

我需要使用Django Rest Framework在Django 1.10.4中记录操作,并将它们保存在一个文件中。

我有不同的序列化程序和功能。我已经阅读了文档,并且不太明白我必须做什么才能使用我发送的数据记录CREATE,UPDATE或DELETE等操作

例如我有:

class MySerializer(serializers.HyperlinkedModelSerializer):
    def create(self, validated_data):
        ...some code...
        return object

    def update(self, instance, validated_data):
        ...some code...
        return instance

我该怎么做?你是否有类似任务的参考?

2 个答案:

答案 0 :(得分:4)

美好的一天,同伴Stackoverflower!

让我们一步一步来。

首先,您需要申报Django logger。这基本上是一种文件处理程序(在您的情况下,因为您要写入文件)具有一些额外的功能。

最简单的记录器可以是(在settings.py中):

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/path/to/django/debug.log',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

接下来,在要记录内容的每个文件中,首先必须获取对记录器的引用。你可以这样做:

import logging
logger = logging.getLogger(__name__)

现在你有了记录器,你可以简单地开始记录你想要的任何东西。您示例中的代码变为:

class MySerializer(serializers.HyperlinkedModelSerializer):
    def create(self, validated_data):
        ...some code...
        logger.info('Information incoming!')
        return object

    def update(self, instance, validated_data):
        ...some code...
        logger.error('Something went wrong!')
        return instance

但是,我觉得您希望为每个序列化程序完成此操作。如果是这样的话,请告诉我,我会延长答案。

祝你好运!

答案 1 :(得分:0)

大部分操作都列在mixins.py