2012-10-17 28 views
12

Câu hỏi giống với this, tuy nhiên tôi muốn django ghi nhật ký thông tin yêu cầu tiết lộ của mình vào số logging.FileHandler - tức là thay vì phải xem nhật ký máy chủ web của tôi. Tôi đã thử và thất bại trong việc thiết lập trình ghi nhật ký mặc định django.requests để viết một số thông tin khác ngoài 4xx và 5xx yêu cầu đến trình xử lý. Vì vậy, kết luận tôi đã đi đến sau khi đi qua các tài liệu và fiddling với logger và các cấp là django không thực sự làm cho rất nhiều báo cáo đăng nhập - vì vậy tôi đang tìm cách xác nhận rằng django không đăng nhập nội bộ các trường hợp không phải lỗi cho các yêu cầu.Ghi nhật ký yêu cầu chi tiết Django

Trả lời

18

Tôi không thể nói tôi đã thực hiện tìm kiếm đầy đủ, nhưng từ những gì tôi có thể thấy tại django/core/handlers/base.py của django 1.4.1, nhật ký django.request thực sự chỉ được sử dụng cho cảnh báo và điều kiện lỗi (4xx/5xx).

Điều đó nói rằng, nó không quan trọng để viết phần mềm trung gian sẽ làm mọi cách ghi lại cho bạn. Một cái gì đó rất đơn giản để giúp bạn bắt đầu có thể chỉ là:

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

Cảm ơn câu trả lời. Đồng ý, giải pháp cuộn tùy chỉnh là khá cơ bản. – markdsievers

+0

Tôi không chắc chắn bạn sẽ nhận được cái gì khác - câu trả lời của tôi cũng đề cập rằng tôi không thấy django thực hiện yêu cầu đăng nhập thành công ở tất cả ... –

+1

Làm thế nào bạn có nghĩa vụ phải tích hợp này vào settings.py? –

Các vấn đề liên quan