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学习笔记之常用函数及说明
May 23 Python
跟老齐学Python之大话题小函数(2)
Oct 10 Python
python列表操作实例
Jan 14 Python
Python实现监控程序执行时间并将其写入日志的方法
Jun 30 Python
Python数组定义方法
Apr 13 Python
Python基于最小二乘法实现曲线拟合示例
Jun 14 Python
python实现ID3决策树算法
Aug 29 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
python pygame实现球球大作战
Nov 25 Python
浅谈Python列表嵌套字典转化的问题
Apr 07 Python
python实现网络五子棋
Apr 11 Python
Django项目如何正确配置日志(logging)
Apr 29 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
当海贼王变成JOJO风
2020/03/02 日漫
php文件上传表单摘自drupal的代码
2011/02/15 PHP
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
jQuery的框架介绍
2016/05/11 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
python输出数学符号实例
2020/05/11 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
策划创业计划书
2014/02/06 职场文书
《掌声》教学反思
2014/02/23 职场文书
共产党员公开承诺书
2014/03/25 职场文书
委托书的写法
2014/09/16 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
检讨书格式
2015/05/07 职场文书
利用python做表格数据处理
2021/04/13 Python
详解Python生成器和基于生成器的协程
2021/06/03 Python
mysql自增长id用完了该怎么办
2022/02/12 MySQL
如何利用python实现Simhash算法
2022/06/28 Python