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配置及使用详解相关推荐

  1. python+tensorflow-gpu+CUDA+cudnn+显卡配置关键步骤详解

    一.检查电脑显卡型号,BIOS是否开启独立显卡功能,是否安装显卡驱动 1.查看自己电脑显卡型号: 可用鲁大师硬件检测,如下图所示: 2.检查BIOS是否开启独显功能,不开启无法得到下图GPU1: 开启 ...

  2. svn 服务器用户权限设置,mac下配置svn服务器详解及用户的权限管理

    首先,感谢jsntghf和星辰的天空的好文分享,不是他们的文章,我估计须要花费更多的精力和时间.在这里我只是对他们文章的润色和本身测试遇到问题的标注.html Mac自带了svn服务器和客户端,因此只 ...

  3. python详细安装教程环境配置-python3.6环境安装+pip环境配置教程图文详解

    1.python安装可以跨平台 2.有两个版本2.7和3.6,第三方库适用2.7版,两个版本不兼容 windows安装: 第一种方法官网安装: 在官网下载安装包如图: 图下点击是默认下载32位所以我们 ...

  4. 微服务 分布式配置中心Apollo详解

    微服务 分布式配置中心Apollo详解 1. 配置中心概述 1.1 配置中心简介 1.2 配置中心特点 1.3 配置中心对比 2. Apollo概述 2.1 Apollo简介 2.2 Apollo特点 ...

  5. python哪个关键字可以导入模块_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  6. mysql master 配置_MySQL双Master配置的方法详解

    刚刚抽空做了一下MYSQL 的主主同步.把步骤写下来,至于会出现的什么问题,以后随时更新.这里我同步的数据库是TEST1.环境描述.主机:192.168.0.231(A)主机:192.168.0.23 ...

  7. IDEA的安装、配置与使用详解

    IDEA的安装.配置与使用详解 目录结构 IDEA的安装.配置与使用详解 一.IDEA介绍 1. Jet Brains公司介绍 2. IDEA介绍 3. IDEA的主要功能介绍 4. IDEA的主要优 ...

  8. Python中Print()函数的用法___实例详解(二)(全,例多)

    Python中Print()函数的用法___实例详解(二)(全,例多) 目录 十一.Print()小例子 十二.Print()中文输入显示乱码问题 十三.Print()写入文件 十四.print()在 ...

  9. python中导入模块是用哪个关键字_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  10. 大型企业网络配置系列课程详解(五) --Frame-Relay配置与相关概念的理解

    大型企业网络配置系列课程详解(五)             --Frame-Relay配置与相关概念的理解   实验原理: Frame-Relay(帧中继)简称FR,是国际电信联盟通信标准化组(ITU ...

最新文章

  1. 公共的service接口
  2. 还是分了的好——看惠普、赛门铁克拆分
  3. 图像处理中的dpi(Dots Per Inch)是什么单位?(图像每英寸长度内的像素点数)
  4. BZOJ-3110-K大数查询-ZJOI2013-暴力
  5. 高性能MySQL——查询性能优化
  6. 计算机操作系统的新技术新知识,计算机操作系统教程:核心与设计原理
  7. Qt图形界面编程入门(5)
  8. phpcms某处逻辑问题导致getshell
  9. visibility: hidden与display:none的区别
  10. 2018 A Sparse Topic Model for Extracting Aspect-Specific Summaries from Online Reviews 稀疏主题模型学习笔记
  11. npm install全局安装的模块路径自定义管理
  12. 【编辑器】VSCode的Web前端(html,css,JavaScript)开发环境打造
  13. 深度学习-图解反向传播算法
  14. 如何解决CF安全数据上报异常 16-2
  15. 重装系统计算机无法启动,重装系统后无法开机的原因及解决方法
  16. mysql mybatis 不等于号写法
  17. 网络应用程序的通信视角
  18. vue js樱花飘落背景特效
  19. Web应用怎样获取Access Token?
  20. cppcheck代码检查工具安装与使用技巧

热门文章

  1. Serializable作用
  2. MongoDB数据库操作和程序基础文档
  3. ArcMap提取不规则线的坐标
  4. 数据结构:最小生成树
  5. Python学习总结(1)——编程准备和基本语法
  6. mysql php 空格函数_MySQL_mysql 强大的trim() 函数,mysql中的去除左空格函数: LTRI - phpStudy...
  7. python爬虫-- 爬取51job网招聘信息
  8. 消息服务器mq集群出现假死,排查tomcat项目假死原因的简单方法
  9. 一种支持多种流媒体协议的播放内核
  10. 关于直播,所有的技术细节都在这里了(三)