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 30 Python
探索Python3.4中新引入的asyncio模块
Apr 08 Python
Python使用QRCode模块生成二维码实例详解
Jun 14 Python
Python 元类实例解析
Apr 04 Python
基于Python列表解析(列表推导式)
Jun 23 Python
python实现桌面气泡提示功能
Jul 29 Python
Python List列表对象内置方法实例详解
Oct 22 Python
PyTorch中反卷积的用法详解
Dec 30 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
Apr 15 Python
pandas 像SQL一样使用WHERE IN查询条件说明
Jun 05 Python
Python的collections模块真的很好用
Mar 01 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中MD5函数使用实例代码
2008/06/07 PHP
PHP逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
分享PHP守护进程类
2015/12/30 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
jQuery替换字符串(实例代码)
2013/11/13 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
python实现从ftp服务器下载文件的方法
2015/04/30 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
使用Vue.js和MJML创建响应式电子邮件
2021/03/23 Vue.js
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
中班中秋节活动反思
2014/02/18 职场文书
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
小学新学期寄语
2014/04/02 职场文书
团拜会策划方案
2014/06/07 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
老龙头导游词
2015/02/11 职场文书
大四学生个人总结
2015/02/15 职场文书
特此通知格式
2015/04/27 职场文书
《小小的船》教学反思
2016/02/18 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android