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复制目录结构脚本代码分享
Mar 06 Python
使用Python内置的模块与函数进行不同进制的数的转换
Mar 12 Python
Python实现matplotlib显示中文的方法详解
Feb 06 Python
基于python 爬虫爬到含空格的url的处理方法
May 11 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
初次部署django+gunicorn+nginx的方法步骤
Sep 11 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
浅谈Keras中shuffle和validation_split的顺序
Jun 19 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
Python Pandas pandas.read_sql_query函数实例用法分析
Jun 21 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 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
php自定义错误处理用法实例
2015/03/20 PHP
PHP curl使用实例
2015/07/02 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
JavaScript 加号(+)运算符号
2009/12/06 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
Python如何获取文件路径/目录
2020/09/22 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
农场厂长岗位职责
2013/12/28 职场文书
初中地理教学反思
2014/01/11 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
教师外出学习心得体会
2016/01/18 职场文书
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers