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实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
selenium+python自动化测试之页面元素定位
Jan 23 Python
Python实战之制作天气查询软件
May 14 Python
pywinauto自动化操作记事本
Aug 26 Python
关于Python中定制类的比较运算实例
Dec 19 Python
Python requests模块cookie实例解析
Apr 14 Python
jupyter notebook 重装教程
Apr 16 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
Python安装Bs4的多种方法
Nov 28 Python
Python Selenium库的基本使用教程
Jan 04 Python
Python实现单例模式的5种方法
Jun 15 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/04/22 PHP
PHP连接SQLServer2005方法及代码
2013/12/26 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
PHP速成大法
2015/01/30 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
React和Vue中监听变量变化的方法
2018/11/14 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
详解vue v-model
2020/08/31 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
Eclipse + Python 的安装与配置流程
2013/03/05 Python
Python中对列表排序实例
2015/01/04 Python
Python装饰器使用示例及实际应用例子
2015/03/06 Python
Python 操作MySQL详解及实例
2017/04/30 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
详解Python with/as使用说明
2018/12/13 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
python使用递归的方式建立二叉树
2019/07/03 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
庆元旦广播稿
2014/02/10 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
八项规定整改方案
2014/02/21 职场文书
网络妈妈观后感
2015/06/08 职场文书
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技