在Django默認沒有訪問日志模塊,但是我們可以通過Django的Middleware來實現(xiàn)一個自己的訪問日志模塊。
首先在Django的工程下創(chuàng)建一個middleware.py文件,內容如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- import time class AccessMiddleware(object): def process_request(self, request): meta = request.META print "[%s] PATH_INFO=%s, REMOTE_ADDR=%s, HTTP_USER_AGENT=%s" \ %(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), meta['PATH_INFO'], meta['REMOTE_ADDR'], meta['HTTP_USER_AGENT']) return None def process_response(self, request, response): return response
其中 process_request() 應當返回 None 或 HttpResponse 對象。
如果返回 None , Django將繼續(xù)處理這個 request , 執(zhí)行后續(xù)的中間件, 然后調用相應的view.
如果返回 HttpResponse 對象, Django 將不再執(zhí)行 任何 其它的中間件(不論種類)以及相應的view. Django將立即返回該 HttpResponse .
然后修改settings.py文件,在MIDDLEWARE_CLASSES部分加入上面創(chuàng)建的AccessMiddleware,比如:(見最后面一行)
MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'commons.middleware.AccessMiddleware', )
重啟服務,然后再訪問任意一個頁面就會看到有日志輸出了。