urD*_*DMG 3 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
Run Code Online (Sandbox Code Playgroud)
我该怎么办?您对类似任务有一些参考吗?
大家好,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,
},
},
}
Run Code Online (Sandbox Code Playgroud)
接下来,在每个要记录内容的文件中,首先必须获得对记录器的引用。您可以执行以下操作:
import logging
logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)
现在有了记录器,您可以轻松开始记录所需的任何内容。您的示例中的代码变为:
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
Run Code Online (Sandbox Code Playgroud)
但是,我有一种感觉,您希望对每个序列化器都执行此操作。如果是这种情况,请告诉我,我会继续回答。
祝好运!