python logging设置_Django logging配置及使用详解
1. settings.py文件
做开发离不开必定离不开日志, 以下是我在工作中写Django项目常用的logging配置.
# 日志配置
BASE_LOG_DIR = os.path.join(BASE_DIR, "log")
LOGGING = {
'version': 1, # 保留字
'disable_existing_loggers': False, # 是否禁用已经存在的日志实例
'formatters': { # 定义日志的格式
'standard': {
'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
'[%(levelname)s][%(message)s]'
},
'simple': {
'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
},
'collect': {
'format': '%(message)s'
}
},
'filters': { # 定义日志的过滤器
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': { # 日志处理程序
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'], # 只有在Django debug为True时才在屏幕打印日志
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'SF': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,根据文件大小自动切
'filename': os.path.join(BASE_LOG_DIR, "xxx_info.log"), # 日志文件
'maxBytes': 1024 * 1024 * 500, # 日志大小 50M(最好不要超过1G)
'backupCount': 3, # 备份数为3 xx.log --> xx.log.1 --> xx.log.2 --> xx.log.3
'formatter': 'standard',
'encoding': 'utf-8', # 文件记录的编码格式
},
'TF': {
'level': 'INFO',
'class': 'logging.handlers.TimedRotatingFileHandler', # 保存到文件,根据时间自动切
'filename': os.path.join(BASE_LOG_DIR, "xxx_info.log"), # 日志文件
'backupCount': 3, # 备份数为3 xx.log --> xx.log.2018-08-23_00-00-00 --> xx.log.2018-08-24_00-00-00 --> ...
'when': 'D', # 每天一切, 可选值有S/秒 M/分 H/小时 D/天 W0-W6/周(0=周一) midnight/如果没指定时间就默认在午夜
'formatter': 'standard',
'encoding': 'utf-8',
},
'error': {
'level': 'ERROR',
'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,自动切
'filename': os.path.join(BASE_LOG_DIR, "xxx_err.log"), # 日志文件
'maxBytes': 1024 * 1024 * 5, # 日志大小 50M
'backupCount': 5,
'formatter': 'standard',
'encoding': 'utf-8',
},
'collect': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,自动切
'filename': os.path.join(BASE_LOG_DIR, "xxx_collect.log"),
'maxBytes': 1024 * 1024 * 50, # 日志大小 50M
'backupCount': 5,
'formatter': 'collect',
'encoding': "utf-8"
}
},
'loggers': { # 日志实例
'': { # 默认的logger应用如下配置
'handlers': ['SF', 'console', 'error'], # 上线之后可以把'console'移除
'level': 'DEBUG',
'propagate': True, # 是否向上一级logger实例传递日志信息
},
'collect': { # 名为 'collect' 的logger还单独处理
'handlers': ['console', 'collect'],
'level': 'INFO',
}
},
}
2. 在Django根目录下创建log文件夹
3. logging的使用
有了logging配置之后, 我们在今后的项目中, 就尽量不再使用print语句来打印信息, 进行BUG调试. 更专业的我们将使用logger对象来保存并打印错误信息.
例如:
import logging
# 实例化logging对象,并以当前文件的名字作为logger实例的名字
logger = logging.getLogger(__name__)
# 生成一个名字叫做 collect 的日志实例
logger_c = logging.getLogger('collect')
class Foo(object):
def test(self, data):
logger.debug(data) # 打印data
try:
...
except Exception as e:
logger.error(str(e)) # 保存并打印错误信息
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
本文标题: Django logging配置及使用详解
本文地址: http://www.cppcns.com/jiaoben/python/266440.html
python logging设置_Django logging配置及使用详解相关推荐
- python+tensorflow-gpu+CUDA+cudnn+显卡配置关键步骤详解
一.检查电脑显卡型号,BIOS是否开启独立显卡功能,是否安装显卡驱动 1.查看自己电脑显卡型号: 可用鲁大师硬件检测,如下图所示: 2.检查BIOS是否开启独显功能,不开启无法得到下图GPU1: 开启 ...
- svn 服务器用户权限设置,mac下配置svn服务器详解及用户的权限管理
首先,感谢jsntghf和星辰的天空的好文分享,不是他们的文章,我估计须要花费更多的精力和时间.在这里我只是对他们文章的润色和本身测试遇到问题的标注.html Mac自带了svn服务器和客户端,因此只 ...
- python详细安装教程环境配置-python3.6环境安装+pip环境配置教程图文详解
1.python安装可以跨平台 2.有两个版本2.7和3.6,第三方库适用2.7版,两个版本不兼容 windows安装: 第一种方法官网安装: 在官网下载安装包如图: 图下点击是默认下载32位所以我们 ...
- 微服务 分布式配置中心Apollo详解
微服务 分布式配置中心Apollo详解 1. 配置中心概述 1.1 配置中心简介 1.2 配置中心特点 1.3 配置中心对比 2. Apollo概述 2.1 Apollo简介 2.2 Apollo特点 ...
- python哪个关键字可以导入模块_关于python导入模块import与常见的模块详解
0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...
- mysql master 配置_MySQL双Master配置的方法详解
刚刚抽空做了一下MYSQL 的主主同步.把步骤写下来,至于会出现的什么问题,以后随时更新.这里我同步的数据库是TEST1.环境描述.主机:192.168.0.231(A)主机:192.168.0.23 ...
- IDEA的安装、配置与使用详解
IDEA的安装.配置与使用详解 目录结构 IDEA的安装.配置与使用详解 一.IDEA介绍 1. Jet Brains公司介绍 2. IDEA介绍 3. IDEA的主要功能介绍 4. IDEA的主要优 ...
- Python中Print()函数的用法___实例详解(二)(全,例多)
Python中Print()函数的用法___实例详解(二)(全,例多) 目录 十一.Print()小例子 十二.Print()中文输入显示乱码问题 十三.Print()写入文件 十四.print()在 ...
- python中导入模块是用哪个关键字_关于python导入模块import与常见的模块详解
0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...
- 大型企业网络配置系列课程详解(五) --Frame-Relay配置与相关概念的理解
大型企业网络配置系列课程详解(五) --Frame-Relay配置与相关概念的理解 实验原理: Frame-Relay(帧中继)简称FR,是国际电信联盟通信标准化组(ITU ...
最新文章
- 公共的service接口
- 还是分了的好——看惠普、赛门铁克拆分
- 图像处理中的dpi(Dots Per Inch)是什么单位?(图像每英寸长度内的像素点数)
- BZOJ-3110-K大数查询-ZJOI2013-暴力
- 高性能MySQL——查询性能优化
- 计算机操作系统的新技术新知识,计算机操作系统教程:核心与设计原理
- Qt图形界面编程入门(5)
- phpcms某处逻辑问题导致getshell
- visibility: hidden与display:none的区别
- 2018 A Sparse Topic Model for Extracting Aspect-Specific Summaries from Online Reviews 稀疏主题模型学习笔记
- npm install全局安装的模块路径自定义管理
- 【编辑器】VSCode的Web前端(html,css,JavaScript)开发环境打造
- 深度学习-图解反向传播算法
- 如何解决CF安全数据上报异常 16-2
- 重装系统计算机无法启动,重装系统后无法开机的原因及解决方法
- mysql mybatis 不等于号写法
- 网络应用程序的通信视角
- vue js樱花飘落背景特效
- Web应用怎样获取Access Token?
- cppcheck代码检查工具安装与使用技巧
热门文章
- Serializable作用
- MongoDB数据库操作和程序基础文档
- ArcMap提取不规则线的坐标
- 数据结构:最小生成树
- Python学习总结(1)——编程准备和基本语法
- mysql php 空格函数_MySQL_mysql 强大的trim() 函数,mysql中的去除左空格函数: LTRI - phpStudy...
- python爬虫-- 爬取51job网招聘信息
- 消息服务器mq集群出现假死,排查tomcat项目假死原因的简单方法
- 一种支持多种流媒体协议的播放内核
- 关于直播,所有的技术细节都在这里了(三)