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 ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
Python实现比较两个列表(list)范围
Jun 12 Python
Python获取当前页面内所有链接的四种方法对比分析
Aug 19 Python
python实现机械分词之逆向最大匹配算法代码示例
Dec 13 Python
Python编程深度学习绘图库之matplotlib
Dec 28 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
python3中property使用方法详解
Apr 23 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
Sep 03 Python
python代码实现猜拳小游戏
Nov 30 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 Python
Django分页器的用法你都了解吗
May 26 Python
python中对列表的删除和添加方法详解
Feb 24 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中使用PDF文档功能
2006/10/09 PHP
PHP获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
PHP连接SQLServer2005方法及代码
2013/12/26 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
详解redux异步操作实践
2018/08/15 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
python数据结构之二叉树的遍历实例
2014/04/29 Python
Python从MP3文件获取id3的方法
2015/06/15 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
python如何删除文件、目录
2020/06/23 Python
python实现简单的tcp 文件下载
2020/09/16 Python
Python通过len函数返回对象长度
2020/10/22 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫