美好的一天,老鄉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