Django 日志配置按日期滚动的方法


Posted in Python onJanuary 31, 2019

记录下Django关于日期的配置,以及如何根据日期滚动切割日志的问题。

配置的源码在githun上 https://github.com/blackmatrix7/django-examples/tree/master/django_logs

准备

环境

python 3.5.2

djang 2.0.5

创建项目

使用命令快速新建django项目,示例的项目名为proj。

开始

修改配置文件

日志部分配置,参考Django官方手册

https://docs.djangoproject.com/en/2.0/topics/logging/#examples

LOGGING属性实际上是一个dictConfig

关于dictConfig的配置,参考Python官方手册

https://docs.python.org/3/library/logging.config.html#logging-config-dictschema

LOGGING = {
 'version': 1,
 'disable_existing_loggers': False,
 'formatters': {
  'verbose': {
   'format': '[%(asctime)s] [%(levelname)s] %(message)s'
  },
 },
 'handlers': {
  # 输出日志的控制台
  'console': {
   'level': 'INFO',
   'class': 'logging.StreamHandler',
   'formatter': 'verbose'
  },
  # 输出日志到文件,按日期滚动
  'file': {
   'level': 'DEBUG',
   'class': 'logging.handlers.TimedRotatingFileHandler',
   # TimedRotatingFileHandler的参数
   # 参照https://docs.python.org/3/library/logging.handlers.html#timedrotatingfilehandler
   # 目前设定每天一个日志文件
   'filename': 'logs/manage.log',
   'when': 'midnight',
   'interval': 1,
   'backupCount': 100,
   'formatter': 'verbose'
  },
  # 发送邮件,目前腾讯云、阿里云的服务器对外发送邮件都有限制,暂时不使用
  'email': {
   'level': 'ERROR',
   'class': 'django.utils.log.AdminEmailHandler',
   'include_html': True,
  }
 },
 'loggers': {
  # 不同的logger
  'django': {
   'handlers': ['console', 'file'],
   'level': 'INFO',
   'propagate': True,
  },
 },
}

创建logs目录

cd django_logs/
mkdir logs

新增django_logs/logger.py

import logging
logger = logging.getLogger('django')

验证

创建app

python manage.py startapp app

编写视图函数

编写一个视图函数,使用logger用于往日志文件写入日志

django_logs/app/views.py

from logger import logger
from django.shortcuts import HttpResponse

def test_logger(request):
 logger.info('test log')
 return HttpResponse('test log')

配置Url

django_logs/proj/urls.py

from app import views
from django.contrib import admin
from django.urls import path

urlpatterns = [
 path('admin/', admin.site.urls),
 path('test_log/', views.test_logger),
]

调用

访问 http://127.0.0.1:8000/test_log/ ,在logs/manage.log中成功写入

[2018-05-18 08:35:44,317] [INFO] test log
[2018-05-18 08:35:44,318] [INFO] "GET /test_log/ HTTP/1.1" 200 8

最后,修改系统日期,可以看到日志文件会按天进行分割。

日志写入仅仅对于创建的logger对象有效,如果需要使用logging直接写入,则需要再做一些修改:让logging模块使用django的dictConfig。

import logging.config
from django.conf import settings

logger = logging.getLogger('django')
logging.config.dictConfig(settings.LOGGING)

以上这篇Django 日志配置按日期滚动的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中处理日期和时间的基本知识点整理汇总
May 22 Python
Python的爬虫程序编写框架Scrapy入门学习教程
Jul 02 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
python实现两个文件合并功能
Apr 01 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
Django中create和save方法的不同
Aug 13 Python
Python selenium的基本使用方法分析
Dec 21 Python
Python Scrapy图片爬取原理及代码实例
Jun 12 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 Python
python图像处理 PIL Image操作实例
Apr 09 Python
Python类的继承用法示例
Jan 31 #Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 #Python
python3使用QQ邮箱发送邮件
May 20 #Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 #Python
对python条件表达式的四种实现方法小结
Jan 30 #Python
python从子线程中获得返回值的方法
Jan 30 #Python
学生信息管理系统Python面向对象版
Jan 30 #Python
You might like
PHP 日,周,月点击排行统计
2012/01/11 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
跟混乱的页面弹窗说再见
2019/04/11 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
深入理解python多进程编程
2016/06/12 Python
Python语言描述随机梯度下降法
2018/01/04 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
师范生自我鉴定范文
2013/10/05 职场文书
计算机专业毕业生的自我评价
2013/11/18 职场文书
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
房地产广告策划方案
2014/05/15 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
本溪水洞导游词
2015/02/11 职场文书
个人党性锻炼总结
2015/03/05 职场文书
2016年母亲节寄语
2015/12/04 职场文书