美好的一天,老乡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
然而,我要这个感觉做每个串行你。如果是这样的话,让我知道,我会延长我的答案。
祝你好运!
哦,非常感谢你!你的回答是最好的,并以我所见过的清晰的总结形式!现在我终于明白了=)我还发现了几个软件包,例如http://django-simple-history.readthedocs.io/en/latest/index.html,但它不适用于1.10 Django。此外,你的感觉是绝对正确的,这个想法是为每个序列化程序进行日志记录。如果有更好的解决方案,我会很高兴,如果你会给它! – urDMG
很高兴听到这个消息。如果你是初学者,我强烈建议使用一个软件包,因为它们通常是稳定的并且经过很好的测试。在这里,您可以比较多个用于历史记录/审计的软件包:https://djangopackages.org/grids/g/model-audit/。我相信你会发现它们中的一些与Django 1.10兼容。但是你必须记住,这些只在Django上工作,并没有利用DRF的存在(这意味着日志记录是在模型上完成的,而不是在序列化器/视图上完成的)。为了扩展我的答案,我还需要查看一些视图(这是日志应该在的地方)。 Thx – AdelaN
@AdelaN如何获得创建或更新的实例,所以要记录类似''Object%s创建的“%unicode(instance)'? – Don