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两个整数相除得到浮点数值的方法
Mar 18 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
Apr 25 Python
Python 多核并行计算的示例代码
Nov 07 Python
pandas series序列转化为星期几的实例
Apr 11 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
python绘制多个曲线的折线图
Mar 23 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 Python
Python实现井字棋小游戏
Mar 09 Python
pyCharm 实现关闭代码检查
Jun 09 Python
python如何求圆的面积
Jul 01 Python
python如何绘制疫情图
Sep 16 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 5.0 Pear安装方法
2006/12/06 PHP
php基础知识:函数基础知识
2006/12/13 PHP
php正则表达式(regar expression)
2011/09/10 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
Swoole源码中如何查询Websocket的连接问题详解
2020/08/30 PHP
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
用JS在浏览器中创建下载文件
2014/03/05 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
JS中判断null的方法分析
2016/11/21 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
几种响应式文字详解
2017/05/19 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
新学期红领巾广播稿
2014/01/14 职场文书
幼儿教育感言
2014/02/05 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
工程质量保证书
2015/05/09 职场文书
七年级上册生物的课件
2019/08/07 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
pytorch Dropout过拟合的操作
2021/05/27 Python