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实现爬取知乎神回复简单爬虫代码分享
Jan 04 Python
python根据京东商品url获取产品价格
Aug 09 Python
python实现数据图表
Jul 29 Python
浅谈python新式类和旧式类区别
Apr 26 Python
python flask解析json数据不完整的解决方法
May 26 Python
python sorted方法和列表使用解析
Nov 18 Python
Python的in,is和id函数代码实例
Apr 18 Python
python3.8动态人脸识别的实现示例
Sep 21 Python
Python类绑定方法及非绑定方法实例解析
Oct 09 Python
python MD5加密的示例
Oct 19 Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 Python
Python insert() / append() 用法 Leetcode实战演示
Mar 31 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学习资源和链接.
2006/12/05 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
封装的原生javascript弹出层代码
2010/09/24 Javascript
js常用代码段整理
2011/11/30 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
python实现加密的方式总结
2020/01/19 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
倩碧美国官网:Clinique美国
2016/07/20 全球购物
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
.net软件工程师面试题
2015/03/31 面试题
顶撞领导检讨书
2014/01/29 职场文书
《乡愁》教学反思
2014/02/18 职场文书
春节联欢会策划方案
2014/05/16 职场文书
八年级英语教学计划
2015/01/23 职场文书
js Proxy的原理详解
2021/05/25 Javascript
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server
新手初学Java List 接口
2021/07/07 Java/Android