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 相关文章推荐
python解析xml模块封装代码
Feb 07 Python
Python基于有道实现英汉字典功能
Jul 25 Python
Django实现发送邮件找回密码功能
Aug 12 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 Python
Python中os模块功能与用法详解
Feb 26 Python
python数据类型可变不可变知识点总结
Mar 06 Python
Python3 io文本及原始流I/O工具用法详解
Mar 23 Python
python zip,lambda,map函数代码实例
Apr 04 Python
Python decimal模块使用方法详解
Jun 08 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
python安装第三方库如xlrd的方法
Oct 31 Python
python 实现两个变量值进行交换的n种操作
Jun 02 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加入ftp扩展的解决方法
2013/02/07 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
PHP目录操作实例总结
2016/09/27 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
机器学习10大经典算法详解
2017/12/07 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
python实现字符串加密成纯数字
2019/03/19 Python
python  logging日志打印过程解析
2019/10/22 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
公务员年总结的自我评价
2013/10/25 职场文书
土木工程毕业生自荐信
2013/11/12 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
JavaScript 原型与原型链详情
2021/11/02 Javascript
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python