记录下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在多进程下运行时,此方法不可行,因为logging模块不是进程安全的。

Django 日志配置按日期滚动的更多相关文章

  1. 运维开发笔记整理-django日志配置

    运维开发笔记整理-django日志配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Django日志 Django使用python内建的logging模块打印日志,Pytho ...

  2. Django 日志配置

    Django日志处理 settings配置 ########### # LOGGING # ########### BASE_LOG_DIR = os.path.join(os.path.dirnam ...

  3. django-debug-toolbar和Django 日志配置

    django-debug-toolbar介绍 django-debug-toolbar 是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息. gith ...

  4. 八.django日志配置

    Django 日志 Django 使用Python 内建的logging 模块打印日志,Python 的logging 配置由四个部分组成: 记录器 —— Logger 处理程序 —— Handler ...

  5. 07.django日志配置

    https://docs.djangoproject.com/en/3.0/topics/logging/ https://yiyibooks.cn/xx/python_352/library/log ...

  6. 第五天.权限批量录入/更新、信号、Django日志配置

    1. 角色.菜单.权限的增删该查 1. ModelForm增删改查 2. 增加和编辑使用同一个视图函数 Form() 1. 生成获取用户输入的标签 2. 对用户输入的内容做校验 3. 保留输入的内容同 ...

  7. django日志配置

    直接参考这篇,很详细:https://www.cnblogs.com/changqing8023/p/9639769.html 补充一点:日志文件打开时,中文乱码,要在handler中设置编码格式,' ...

  8. 第十三篇Django Logging配置样例

    第十三篇Django Logging配置样例 阅读目录(Content) Django 日志配置模板 官方链接 Django Logging Django 日志配置模板 LOGGING = { 've ...

  9. django 日志logging的配置以及处理

    django日志官方文档https://docs.djangoproject.com/en/1.11/topics/logging/ 本文摘自http://davidbj.blog.51cto.com ...

随机推荐

  1. [Beta]M2事后分析

    计划 你原计划的工作是否最后都做完了? 如果有没做完的,为什么? 答:没有,全部的功能没有实现.其中,界面还差两个,逻辑还差闹钟逻辑和群组逻辑,可以说这些东西是我们的核心功能之一,缺失了他们对我们整个 ...

  2. beta版使用说明

    StudyAssistant说明书 我们的软件使用简单方便,下面就让我们在介绍软件界面的同时一同来介绍我们的软件使用方法: 1.这是我们软件的首页界面,单刀直入,简单明了,四科同时类课程,更好的帮助同 ...

  3. [福大软工] Z班 第11次成绩排行榜

    注:本次成绩排行榜是针对团队Alpha阶段冲刺博客的得分统计 作业要求 http://www.cnblogs.com/easteast/p/7749181.html 评分细则 在团队Alpha阶段刚开 ...

  4. QT下opencv的编译和使用

    需要的文件 qt-opensource-windows-x86-mingw491_opengl-5.4.0.exe cmake-3.12.0-rc1-win64-x64.msi opencv-2.4. ...

  5. VM虚拟机—JVM内存

    JVM在运行时将数据划分为了5个区域来存储,这5个区域图示如下: 其中方法区和堆对是所有线程共享的内存区域:而java栈.本地方法栈和程序员计数器是运行时线程私有的内存区域. 首先我们熟悉一下一个 J ...

  6. node.js依赖express解析post请求四种数据格式()

    分别是这四种: www-form-urlencoded, form-data, application/json, text/xml www-form-urlencoded 这是http的post请求 ...

  7. WebService相关

    1.WebService 之 WSDL文件 讲解 2.WSDL样式详解 3.IntelliJ IDEA 开发 WebService 4.浅谈WebService的调用 5.用IDEA8快速开发WebS ...

  8. solr string类型表示不支持分词

    solr string类型表示不支持分词

  9. Enea推出Linux实时加速方案专门针对Xilinx UltraScale+

    导读 Enea(纳斯达克OMX Nordic:ENEA)Linux实时加速方案的扩展版本,完全集成了Xilinx UltraScale +系列的所有处理单元.借助Xilinx开发者大会(XDF)201 ...

  10. IDEA如何刷新pom文件

    被新手问到了“IDEA如何刷新pom文件?”这个问题,想来这是一个不好意思问的常犯的错误吧. 在IDEA中,修改了pom.xml文件,添加了依赖以后,一般会弹出以下这个警告来. 点击[Import C ...