Django自带日志 settings.py文件配置方法


Posted in Python onAugust 30, 2019

Django settings.py文件配置部分:

# logging配置
log_file = '/home/nagain/learn/log'
log_file_path = os.path.join(log_file, 'all.log')
if not os.path.exists(log_file):
 os.mkdir(log_file)
 os.mknod(log_file_path) # 创建空文件
 
LOGGING = {
 'version': 1,
 'disable_existing_loggers': True,
 'formatters': {
  # 日志格式
  'standard': {
   'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] '
      '[%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'
  }
 },
 'filter': {
 
 },
 'handlers': {
  'mail_admins': {
   'level': 'ERROR',
   'class': 'django.utils.log.AdminEmailHandler',
   'include_html': True,
  },
  'default': {
     'level': 'DEBUG',
     'class': 'logging.handlers.RotatingFileHandler',
     'filename': log_file_path,   # 日志输出文件
     'maxBytes': 1024*1024*5,     # 文件大小
     'backupCount': 5,       # 备份份数
     'formatter': 'standard',     #使用哪种formatters日志格式
  },
  'error': {
     'level': 'ERROR',
     'class': 'logging.handlers.RotatingFileHandler',
     'filename': log_file_path,
     'maxBytes': 1024*1024*5,
     'backupCount': 5,
     'formatter': 'standard',
    },
  'console': {
     'level': 'DEBUG',
     'class': 'logging.StreamHandler',
     'formatter': 'standard'
    },
  'request_handler': {
     'level': 'DEBUG',
     'class': 'logging.handlers.RotatingFileHandler',
     'filename': log_file_path,
     'maxBytes': 1024*1024*5,
     'backupCount': 5,
     'formatter': 'standard',
    },
  'scprits_handler': {
     'level': 'DEBUG',
     'class': 'logging.handlers.RotatingFileHandler',
     'filename': log_file_path,
     'maxBytes': 1024*1024*5,
     'backupCount': 5,
     'formatter': 'standard',
    }
 },
 'loggers': {
  'django': {
     'handlers': ['default', 'console'], # 来自上面定义的handlers内容
      'level': 'INFO',
     'propagate': False # 是否继承父类的log信息
  },
  'scripts': {
   'handlers': ['scprits_handler'],
   'level': 'INFO',
   'propagate': False
  },
  # sourceDns.webdns.views 应用的py文件
  'sourceDns.webdns.views': {
     'handlers': ['default', 'error'],
     'level': 'INFO',
     'propagate': True
  },
  'sourceDns.webdns.util': {
     'handlers': ['error'],
     'level': 'ERROR',
     'propagate': True
  },
  # 'django.request': {
  #    'handlers': ['mail_admins'],
  #    'level': 'ERROR',
  #    'propagate': False,
  #   },
 }
}

项目视图函数views.py使用实例:

# 日志
import logging
logger = logging.getLogger('sourceDns.webdns.views') # 获取settings.py配置文件中logger名称
def index(request):
 a = reverse('index:article')
 logger.info(a)
 return HttpResponseRedirect(a)

注意:错误日志记录级别level

级别 描述
CRITICAL 50 关键错误/消息
ERROR 40 错误
WARNING 30 警告消息
INFO 20 通知消息
DEBUG 10 调试
NOTSET 0 无级别

注意:记录器 handler

关键字参数 描述
filename 将日志消息附加到指定文件名的文件
filemode 指定用于打开文件模式
format 用于生成日志消息的格式字符串
datefmt 用于输出日期和时间的格式字符串
level 设置记录器的级别
stream 提供打开的文件,用于把日志消息发送到文件。

注意: format日志消息显示格式

格式 描述
%(name)s 记录器的名称
%(levelno)s 数字形式的日志记录级别
%(levelname)s 日志记录级别的文本名称
%(filename)s 执行日志记录调用的源文件的文件名称
%(pathname)s 执行日志记录调用的源文件的路径名称
%(funcName)s 执行日志记录调用的函数名称
%(module)s 执行日志记录调用的模块名称
%(lineno)s 执行日志记录调用的行号
%(created)s 执行日志记录的时间
%(asctime)s 日期和时间
%(msecs)s 毫秒部分
%(thread)d 线程ID
%(threadName)s 线程名称
%(process)d 进程ID
%(message)s 记录的消息

注意: 内置处理器

logging模块提供了一些处理器,可以通过各种方式处理日志消息。使用addHandler()方法将这些处理器添加给Logger对象。另外还可以为每个处理器配置它自己的筛选和级别。

handlers.DatagramHandler(host,port):发送日志消息给位于制定host和port上的UDP服务器。
 
handlers.FileHandler(filename):将日志消息写入文件filename。
 
handlers.HTTPHandler(host, url):使用HTTP的GET或POST方法将日志消息上传到一台HTTP 服务器。
 
handlers.RotatingFileHandler(filename):将日志消息写入文件filename。如果文件的大小超出maxBytes制定的值,那么它将被备份为filename1。

*****以上内容也是自己查询通过自己测试是可行的,如果想要了解更加详细,请自行查看神器(django官方文档)*****

这篇Django自带日志 settings.py文件配置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python入门_浅谈字符串的分片与索引、字符串的方法
May 16 Python
理论讲解python多进程并发编程
Feb 09 Python
python2.7实现FTP文件下载功能
Apr 15 Python
使用Python机器学习降低静态日志噪声
Sep 29 Python
使用Python的toolz库开始函数式编程的方法
Nov 15 Python
Python版名片管理系统
Nov 30 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
python 循环数据赋值实例
Dec 02 Python
解决pycharm上的jupyter notebook端口被占用问题
Dec 17 Python
python多线程使用方法实例详解
Dec 30 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
tensorflow如何批量读取图片
Aug 29 #Python
解决Django layui {{}}冲突的问题
Aug 29 #Python
Python Django实现layui风格+django分页功能的例子
Aug 29 #Python
在Django下测试与调试REST API的方法详解
Aug 29 #Python
阿里云ECS服务器部署django的方法
Aug 29 #Python
树莓派3 搭建 django 服务器的实例
Aug 29 #Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 #Python
You might like
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
JavaScript中创建原子的方法总结
2018/08/26 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
Python实现把数字转换成中文
2015/06/29 Python
django model去掉unique_together报错的解决方案
2016/10/18 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
《姥姥的剪纸》教学反思
2014/02/25 职场文书
大专学生求职信
2014/07/04 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
2014年学生工作总结
2014/11/20 职场文书
入党函调证明材料
2014/12/24 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
女方离婚起诉书
2015/05/18 职场文书
地雷战观后感
2015/06/09 职场文书
校运会广播稿
2015/08/19 职场文书
初中体育课教学反思
2016/02/16 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
Python常遇到的错误和异常
2021/11/02 Python