2
我使用Django創建了一個REST Web服務。這個Web服務有一個日誌文件。我想在日誌文件中記錄所有Web服務(http)請求。但是,Web服務請求處理由Django完成,我只設置url-request處理程序映射並創建請求處理程序(Django命名法中的視圖)。有沒有辦法在中心點記錄所有的請求,而不需要在相關的請求處理程序(視圖)中記錄每個請求?在Django中記錄Web服務請求
在此先感謝。
我使用Django創建了一個REST Web服務。這個Web服務有一個日誌文件。我想在日誌文件中記錄所有Web服務(http)請求。但是,Web服務請求處理由Django完成,我只設置url-request處理程序映射並創建請求處理程序(Django命名法中的視圖)。有沒有辦法在中心點記錄所有的請求,而不需要在相關的請求處理程序(視圖)中記錄每個請求?在Django中記錄Web服務請求
在此先感謝。
是的Django有一個內置的signals框架。
它允許您註冊每次請求啓動時調用的函數。
This documenation頁解釋瞭如何做一步一步
使用裝飾方法:
from django.core.signals import request_started
from django.dispatch import receiver
@receiver(request_started)
def my_callback(sender, **kwargs):
# log the request here
pass
應該在哪裏這段代碼生活?您可以將信號處理和 註冊碼放在任何地方。但是,您需要確保 它所在的模塊得到早期導入,以便在需要發送任何信號之前處理信號 。這 使您的應用程序的models.py一個好的地方,把信號 處理程序的註冊。