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 相关文章推荐
django多文件上传,form提交,多对多外键保存的实例
Aug 06 Python
python ubplot使用方法解析
Jan 10 Python
利用python画出AUC曲线的实例
Feb 28 Python
利用python实现凯撒密码加解密功能
Mar 31 Python
Python多线程实现支付模拟请求过程解析
Apr 21 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
在Keras中CNN联合LSTM进行分类实例
Jun 29 Python
python中如何写类
Jun 29 Python
Python接收手机短信的代码整理
Aug 02 Python
Python Web项目Cherrypy使用方法镜像
Nov 05 Python
Window10上Tensorflow的安装(CPU和GPU版本)
Dec 15 Python
Python爬虫回测股票的实例讲解
Jan 22 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提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
python基于phantomjs实现导入图片
2016/05/13 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
艺术系应届生的自我评价
2013/10/19 职场文书
酒吧总经理岗位职责
2013/12/10 职场文书
《画》教学反思
2014/04/14 职场文书
爱之链教学反思
2014/04/30 职场文书
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python