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


Posted in Python onJune 23, 2017

本文实例讲述了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 相关文章推荐
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 Python
python使用线程封装的一个简单定时器类实例
May 16 Python
Python设置Socket代理及实现远程摄像头控制的例子
Nov 13 Python
python删除本地夹里重复文件的方法
Nov 19 Python
Python+pandas计算数据相关系数的实例
Jul 03 Python
简单了解python关系(比较)运算符
Jul 08 Python
Python使用进程Process模块管理资源
Mar 05 Python
使用python-Jenkins批量创建及修改jobs操作
May 12 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 Python
详解Python文本操作相关模块
Jun 22 #Python
python字符串过滤性能比较5种方法
Jun 22 #Python
Python编程实现的简单Web服务器示例
Jun 22 #Python
Python实现复杂对象转JSON的方法示例
Jun 22 #Python
Collatz 序列、逗号代码、字符图网格实例
Jun 22 #Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 #Python
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 #Python
You might like
php图片上传存储源码并且可以预览
2011/08/26 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
PHP SOCKET编程详解
2015/05/22 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
Python hashlib模块实例使用详解
2019/12/24 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
提高EJB性能都有哪些技巧
2012/03/25 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
shell变量的作用空间是什么
2013/08/17 面试题
三好学生演讲稿范文
2014/04/26 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
导游词之河北野三坡
2019/12/11 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
Python如何把不同类型数据的json序列化
2021/04/30 Python
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
浅谈MySQL中的六种日志
2022/03/23 MySQL