2012-10-17 20 views
12

pytanie brzmi tak samo jak this jednak ja chcąc Django do logowania to pełne informacje prośba do mojego logging.FileHandler - czyli zamiast patrzeć na moich serwerach logów. Próbowałem i nie udało mi się ustawić domyślnego rejestratora django.requests, aby zapisywać do instrukcji obsługi coś innego niż 4xx i 5xx .Django gadatliwy zażądać zalogowaniu

Zatem konkluzja Doszedłem do po przejściu przez docs i błahy z rejestratorów i poziomów jest to, że Django nie zarabia dużo sprawozdania z bali - więc szukam, aby potwierdzić, że Django nie wewnętrznie logowaniu scenariusze braku błędów dla żądań.

Odpowiedz

18

Nie mogę powiedzieć, że zrobił wyczerpującego poszukiwania, ale z tego co widzę na django/core/handlers/base.py Django 1.4.1, django.request rejestrator jest rzeczywiście używany tylko do ostrzeżenia i warunki błędu (4xx/5xx).

Powiedział, że jest to trywialne napisać middleware, że zrobi wszystko, sposób logowania dla Ciebie. Coś bardzo prostego do rozpoczęcia może być po prostu:

from time import time 
from logging import getLogger 

class LoggingMiddleware(object): 
    def __init__(self): 
     # arguably poor taste to use django's logger 
     self.logger = getLogger('django.request') 

    def process_request(self, request): 
     request.timer = time() 
     return None 

    def process_response(self, request, response): 
     self.logger.info(
      '[%s] %s (%.1fs)', 
      response.status_code, 
      request.get_full_path(), 
      time() - request.timer 
     ) 
     return response 
+0

Dzięki za odpowiedź. Uzgodnione, niestandardowe rozwiązanie walcowane jest dość proste. – markdsievers

+0

Nie jestem pewien, czy dostaniesz coś innego - moja odpowiedź wspomina również, że nie widzę django wykonującego pomyślne rejestrowanie żądań w ogóle ... –

+1

Jak należy to zintegrować z settings.py? –

Powiązane problemy