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过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
深入理解Python分布式爬虫原理
Nov 23 Python
python实现本地图片转存并重命名的示例代码
Oct 27 Python
详解python列表(list)的使用技巧及高级操作
Aug 15 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
Python如何用filter函数筛选数据
Mar 05 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 Python
Python HTMLTestRunner库安装过程解析
May 25 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
Nov 25 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 iconv函数的使用详解
2013/06/09 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
python和shell变量互相传递的几种方法
2013/11/20 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
使用pip安装python库的多种方式
2019/07/31 Python
Django获取应用下的所有models的例子
2019/08/30 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
python使用配置文件过程详解
2019/12/28 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
学校食堂采购员岗位职责
2013/12/05 职场文书
年度考核自我鉴定
2014/02/02 职场文书
森林防火工作方案
2014/02/14 职场文书
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript