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多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
python正则表达式之作业计算器
Mar 18 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
Oct 09 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
Django 静态文件配置过程详解
Jul 23 Python
django的ORM操作 增加和查询
Jul 26 Python
python-sys.stdout作为默认函数参数的实现
Feb 21 Python
python中threading开启关闭线程操作
May 02 Python
Python datetime 如何处理时区信息
Sep 02 Python
pytorch 中nn.Dropout的使用说明
May 20 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统计二维数组元素个数的方法
2013/11/12 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
Python修改Excel数据的实例代码
2013/11/01 Python
9种python web 程序的部署方式小结
2014/06/30 Python
python机器学习之神经网络(一)
2017/12/20 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
Python实现石头剪刀布游戏
2021/01/20 Python
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
计算机网络毕业生自荐信
2013/10/01 职场文书
同学聚会策划方案
2014/06/06 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
营业用房租赁协议书
2014/11/26 职场文书
2015年敬老月活动总结
2015/03/27 职场文书