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 性能优化技巧总结
Nov 01 Python
详解Python装饰器由浅入深
Dec 09 Python
Django 添加静态文件的两种实现方法(必看篇)
Jul 14 Python
Python模块文件结构代码详解
Feb 03 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
Mar 19 Python
在PyCharm下使用 ipython 交互式编程的方法
Jan 17 Python
python使用phoenixdb操作hbase的方法示例
Feb 28 Python
django富文本编辑器的实现示例
Apr 10 Python
学Python 3的理由和必要性
Nov 19 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
Django admin组件的使用
Oct 24 Python
Python实现石头剪刀布游戏
Jan 20 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
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
php删除数组中重复元素的方法
2015/12/22 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
php技巧小结【推荐】
2017/01/19 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
Python深入学习之对象的属性
2014/08/31 Python
在Python中使用next()方法操作文件的教程
2015/05/24 Python
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
python实现Decorator模式实例代码
2018/02/09 Python
简单了解django缓存方式及配置
2019/07/19 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
Java servlet面试题
2012/03/04 面试题
房地产销售员的自我评价分享
2013/12/04 职场文书
给老婆的搞笑检讨书
2014/01/12 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
销售合作意向书范本
2015/05/08 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
关于运动会的广播稿
2015/08/19 职场文书
python3 字符串str和bytes相互转换
2022/03/23 Python
python标准库ElementTree处理xml
2022/05/20 Python