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的dataframe和matrix的互换方法
Apr 11 Python
python实现归并排序算法
Nov 22 Python
Python设计模式之抽象工厂模式原理与用法详解
Jan 15 Python
django如何实现视图重定向
Jul 24 Python
python requests指定出口ip的例子
Jul 25 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
python保留小数位的三种实现方法
Jan 07 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
python 操作mysql数据中fetchone()和fetchall()方式
May 15 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 Python
Python基于smtplib模块发送邮件代码实例
May 29 Python
Python常用模块函数代码汇总解析
Aug 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面向对象概念
2011/11/06 PHP
php自动加载机制的深入分析
2013/06/08 PHP
PHP反射机制用法实例
2014/08/28 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
PHP工厂模式的日常使用
2019/03/20 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
2014/01/09 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
vue2中filter()的实现代码
2017/07/09 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
Python验证码识别的方法
2015/07/10 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
英国手机零售商:Metrofone
2019/03/18 全球购物
中专生自我鉴定
2013/12/17 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
Vue实现下拉加载更多
2021/05/09 Vue.js