Django实现的自定义访问日志模块示例

yipeiwu_com6年前Python基础

本文实例讲述了Django实现的自定义访问日志模块。分享给大家供大家参考,具体如下:

在Django默认没有访问日志模块,但是我们可以通过Django的Middleware来实现一个自己的访问日志模块。

首先在Django的工程下创建一个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将继续处理这个 request , 执行后续的中间件, 然后调用相应的view.

如果返回 HttpResponse 对象, Django 将不再执行 任何 其它的中间件(不论种类)以及相应的view. Django将立即返回该 HttpResponse .

然后修改settings.py文件,在MIDDLEWARE_CLASSES部分加入上面创建的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',
)

重启服务,然后再访问任意一个页面就会看到有日志输出了。

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python日志操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

django 做 migrate 时 表已存在的处理方法

在开发web的时候,如果是以前已存在的项目,项目下载下来后,为了使用测试库的数据,会直接将整个测试库(如sqlite3)拿到本机来。这种情况下,如果执行的顺序不对,很容易在执行migra...

python中web框架的自定义创建

一、什么是框架 框架的本质就是一个socket服务,可以完成不同主机之间的通信。它是一个半成品的项目,其中可能已经封装好了基本的功能,比如路由,模型,模板,视图功能都已完善,又可能它只封...

python 环境变量和import模块导入方法(详解)

1、定义 模块:本质就是.py结尾的文件(逻辑上组织python代码)模块的本质就是实现一个功能 文件名就是模块名称 包: 一个有__init__.py的文件夹;用来存放模块文件 2、导...

关于python的list相关知识(推荐)

如下所示,一起跟随小编过来看看吧! list01 = ['alex',12,65,'xiaodong',100,'chen',5] list02 = [67,7,'jinjiao_daw...

tensorflow实现简单逻辑回归

逻辑回归是机器学习中很简答的一个栗子,这篇文章就是要介绍如何使用tensorflow实现一个简单的逻辑回归算法。 逻辑回归可以看作只有一层网络的前向神经网络,并且参数连接的权重只是一个值...