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实现的一个简单LRU cache
Sep 26 Python
python optparse模块使用实例
Apr 09 Python
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
python模块smtplib学习
May 22 Python
解决pycharm无法识别本地site-packages的问题
Oct 13 Python
手把手教你如何安装Pycharm(详细图文教程)
Nov 28 Python
python 读取修改pcap包的例子
Jul 23 Python
Python的缺点和劣势分析
Nov 19 Python
Python中bisect的使用方法
Dec 31 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
Python如何安装第三方模块
May 28 Python
浅谈Python中的正则表达式
Jun 28 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缓存技术的多种方法小结
2012/08/14 PHP
解析php获取字符串的编码格式的方法(函数)
2013/06/21 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
Js 弹出框口并返回值的两种常用方法
2010/12/30 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
详解Python中的__new__()方法的使用
2015/04/09 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
Python元组知识点总结
2019/02/18 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
水果花束:Fruit Bouquets
2017/12/20 全球购物
大学生职业规划论文
2014/01/11 职场文书
七年级音乐教学反思
2014/01/26 职场文书
运动会解说词100字
2014/01/31 职场文书
食品工程专业求职信
2014/06/15 职场文书
红白喜事主持词
2015/07/06 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang