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环境变量设置方法
Aug 28 Python
使用Python绘制图表大全总结
Feb 11 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
Sep 22 Python
详谈python中冒号与逗号的区别
Apr 18 Python
对python判断ip是否可达的实例详解
Jan 31 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
Python文件操作模拟用户登陆代码实例
Jun 09 Python
Python json格式化打印实现过程解析
Jul 21 Python
python中Pexpect的工作流程实例讲解
Mar 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支持分块与断点续传文件下载功能代码
2014/05/09 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
Javascript中判断对象是否为空
2015/06/10 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
vue.js实现价格格式化的方法
2017/05/23 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
python编写爬虫小程序
2015/05/14 Python
python字典的常用操作方法小结
2016/05/16 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
Flask之flask-script模块使用
2018/07/26 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
Python模块 _winreg操作注册表
2020/02/05 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
服务行业个人求职的自我评价
2013/12/12 职场文书
开学典礼决心书
2014/03/11 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
考试作弊检讨书
2015/01/27 职场文书
小学生暑假安全公约
2015/07/14 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
使用springMVC所需要的pom配置
2021/09/15 Java/Android
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记
MySQL三种方式实现递归查询
2022/04/18 MySQL