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实现对excel文件列表值进行统计的方法
Jul 25 Python
详解Django rest_framework实现RESTful API
May 24 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
500行Python代码打造刷脸考勤系统
Jun 03 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
python 矢量数据转栅格数据代码实例
Sep 30 Python
django连接mysql数据库及建表操作实例详解
Dec 10 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
解决reload(sys)后print失效的问题
Apr 25 Python
Python pip 常用命令汇总
Oct 19 Python
python使用scapy模块实现ARP扫描的过程
Jan 21 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时间戳与日期的转换
2013/06/06 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
php扩展开发入门demo示例
2019/09/23 PHP
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
详解jQuery选择器
2016/12/21 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
python http基本验证方法
2018/12/26 Python
Python之列表实现栈的工作功能
2019/01/28 Python
Python实现12306火车票抢票系统
2019/07/04 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
Python绘制股票移动均线的实例
2019/08/24 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
Python如何省略括号方法详解
2020/03/21 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
python 模拟登录B站的示例代码
2020/12/15 Python
详解HTML5中ol标签的用法
2015/09/08 HTML / CSS
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
董事长秘书岗位职责
2013/11/29 职场文书
毕业生就业自荐信
2013/12/04 职场文书
料理师求职信
2014/01/30 职场文书
公司运动会策划方案
2014/05/25 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers
Python OpenCV形态学运算示例详解
2022/04/07 Python
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python