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和shell变量互相传递的几种方法
Nov 20 Python
用Python给文本创立向量空间模型的教程
Apr 23 Python
python中list常用操作实例详解
Jun 03 Python
python实现员工管理系统
Jan 11 Python
python爬虫基本知识
Mar 05 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
Oct 17 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
python实现while循环打印星星的四种形状
Nov 23 Python
python中if及if-else如何使用
Jun 02 Python
Python unittest discover批量执行代码实例
Sep 08 Python
Python requests上传文件实现步骤
Sep 15 Python
python实现视频压缩功能
Dec 18 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
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
简述Python中的面向对象编程的概念
2015/04/27 Python
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
师范毕业生自荐信
2013/10/17 职场文书
英语专业毕业生自荐信
2013/10/28 职场文书
集体备课反思
2014/02/12 职场文书
公司保密承诺书
2014/03/27 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
2014年节能减排工作总结
2014/12/06 职场文书