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中表达式x += y和x = x+y 的区别详解
Jun 20 Python
python测试mysql写入性能完整实例
Jan 18 Python
Python爬豆瓣电影实例
Feb 23 Python
浅析python中的迭代与迭代对象
Oct 08 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
python pygame实现滚动横版射击游戏城市之战
Nov 25 Python
Python 基于jwt实现认证机制流程解析
Jun 22 Python
Python中过滤字符串列表的方法
Dec 22 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 Python
python如何构建mock接口服务
Jan 28 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 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写UltraEdit插件脚本实现方法
2011/12/26 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
JS Timing
2007/04/21 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
Python编程中对文件和存储器的读写示例
2016/01/25 Python
Saltstack快速入门简单汇总
2016/03/01 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
python爬取指定微信公众号文章
2018/12/20 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
基于Python测试程序是否有错误
2020/05/16 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
财务人员个人求职信范文
2013/12/04 职场文书
活动邀请函范文
2014/01/19 职场文书
金融与证券专业求职信
2014/06/22 职场文书
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python
Python  lambda匿名函数和三元运算符
2022/04/19 Python