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 12 Python
Python的多态性实例分析
Jul 07 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
Python 遍历子文件和所有子文件夹的代码实例
Dec 21 Python
Python标准库inspect的具体使用方法
Dec 06 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
python实现大学人员管理系统
Oct 25 Python
sklearn+python:线性回归案例
Feb 24 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
May 16 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 Python
python中的django是做什么的
Jul 31 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出错界面
2006/10/09 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
跟我学习javascript的undefined与null
2015/11/17 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
JSONP跨域请求
2017/03/02 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
Python画图高斯分布的示例
2019/07/10 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
体育教育专业毕业生自荐信
2013/11/15 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
学校党员对照检查材料
2014/08/28 职场文书
护士节活动总结
2014/08/29 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
学生会自荐信
2019/05/16 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
Nginx虚拟主机的配置步骤过程全解
2022/03/31 Servers
Python循环之while无限迭代
2022/04/30 Python