2013-02-22 103 views
2

我使用Django創建了一個REST Web服務。這個Web服務有一個日誌文件。我想在日誌文件中記錄所有Web服務(http)請求。但是,Web服務請求處理由Django完成,我只設置url-request處理程序映射並創建請求處理程序(Django命名法中的視圖)。有沒有辦法在中心點記錄所有的請求,而不需要在相關的請求處理程序(視圖)中記錄每個請求?在Django中記錄Web服務請求

在此先感謝。

回答

2

是的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一個好的地方,把信號 處理程序的註冊。