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基础教程之类class定义使用方法
Feb 20 Python
python简单程序读取串口信息的方法
Mar 13 Python
Python中import机制详解
Nov 14 Python
TensorFlow实现卷积神经网络
May 24 Python
python将字符串以utf-8格式保存在txt文件中的方法
Oct 30 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
Python shutil模块用法实例分析
Oct 02 Python
Python Django模型详解
Oct 05 Python
PyTorch中的torch.cat简单介绍
Mar 17 Python
Python pyecharts绘制条形图详解
Apr 02 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错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
php生成mysql的数据字典
2016/07/07 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
JavaScript库 开发规则
2009/01/31 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
浅谈Javascript事件处理程序的几种方式
2012/06/27 Javascript
JS获取IP、MAC和主机名的五种方法
2013/11/14 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
VUE脚手架具体使用方法
2019/05/20 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
运动会100米解说词
2014/01/23 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
公务员个人年终总结
2015/02/12 职场文书
学校德育工作总结2015
2015/05/11 职场文书
开学第一周总结
2015/07/16 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL
使用Ajax实现无刷新上传文件
2022/04/12 Javascript