django 加日志
qqqq
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
# 指定输出的格式,被handler使用。
'formatters': {
'standard': {
'format': '%(asctime)s %(levelname)-8s %(message)s'
},
'detail': {
'format': '%(asctime)s %(levelname)-8s %(pathname)s[line:%(lineno)d] %(message)s'
},
},
# 指定输出到控制台还是文件中,以及输出的方式。被logger引用。
'handlers': {
# 输出到控制台
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'standard',
},
'file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
# 存放的日志的位置
'filename': r'F:\python\myorm\log',
'maxBytes': 1024 * 1024 * 5, # 5 MB
'backupCount': 100,
'formatter': 'detail',
},
'web_file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
# 日志的位置
'filename': r'F:\python\myorm\web\web.log',
'maxBytes': 1024 * 1024 * 5, # 5 MB
'backupCount': 100,
'formatter': 'detail',
},
'rbac_file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
# 日志的位置
'filename': r'F:\python\myorm\rbac\rbac.log',
'maxBytes': 1024 * 1024 * 5, # 5 MB
'backupCount': 100,
'formatter': 'detail',
},
},
# 指定django中的每个模块使用哪个handlers。以及日志输出的级别。
'loggers': {
'django': {
'handlers': ['console', 'file'],
'level': 'INFO',
'propagate': True,
},
# 自定义模块日志
'users': {
'handlers': ['console', 'file'],
'level': 'DEBUG',
'propagate': True,
},
'common': {
# 使用哪一个 handlers
'handlers': ['console', 'file'],
'level': 'DEBUG',
'propagate': True,
},
# web 应用的名字
'web': {
'handlers': ['console', 'web_file'],
'level': 'INFO',
'propagate': True,
},
'rbac': {
'handlers': ['console', 'rbac_file'],
'level': 'INFO',
'propagate': True,
},
},
}
此配置分成三个部分:
- formatters: 指定输出的格式,被handler使用。
- handlers: 指定输出到控制台还是文件中,以及输出的方式。被logger引用。
- loggers: 指定django中的每个模块使用哪个handlers。以及日志输出的级别。
注意:日志的输出级别是由loggers中的每个模块中level选项定义。如果没有配置,那么默认为warning级别。
然后在每个模块的views.py中,通过下面代码使用:
import logging
logger = logging.getLogger(__name__)
具体的输出部分代码为:
logger.debug("hello, world")
logger.info("hello, world")
logger.error("hello, world")
日志记录级别 Level
logging模块的重点在于生成和处理日志消息。每条消息由一些文本和指示其严重性的相关级别组成。级别包含符号名称和数字
| 级别 | 值 | 描述 |
|---|---|---|
| CRITICAL | 50 | 关键错误/消息 |
| ERROR | 40 | 错误 |
| WARNING | 30 | 警告消息 |
| INFO | 20 | 通知消息 |
| DEBUG | 10 | 调试 |
| NOTSET | 0 | 无级别 |
。
记录器 Logger
记录器负责管理日志消息的默认行为,包括日志记录级别、输出目标位置、消息格式以及其它基本细节。
关键字参数:
- 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 记录的消息
内置处理器 handler
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。
由于内置处理器还有很多,如果想更深入了解。可以查看官方手册。
现在大概了解了logging的使用方法,现在可以结合前面的例子使用。
django 加日志的更多相关文章
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态?
https://alibaba.github.io/arthas/ Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决 ...
- python的日志模块:logging;django的日志系统;django日志输出时间修改
Django的log,主要是复用Python标准库中的logging模块,在settings.py中进行配置 源代码 1.__init__.py包含以下类: StreamHandler Formatt ...
- Django加载静态网页模板
Django加载静态网页模板 步骤: 第一步:在子系统blog根目录下新建模版目录templates,里面新建一个login.html <!DOCTYPE html> <html l ...
- Django多进程日志文件问题
Django多进程日志文件问题 最近使用Django做一个项目.在部署的时候发现日志文件不能滚动(我使用的是RotatingFileHandler),只有一个日志文件. 查看Log发现一个错误消息:P ...
- django开发日志配置
做django开发离不开 日志,这用于保存我门的服务器的日志信息,便于开发人员的维护. 直接上代码: 在setting.py文件里直接配置即可 LOGGING = { 'version': 1, 'd ...
- Django中日志管理
在settings中设置日志的相关信息,然后再逻辑代码区就可以保存相应的信息了 #简单设置: LOGGING = { 'version': 1, 'disable_existing_loggers': ...
- django 自定义日志配置
如果不想使用 python 的 dictConfig 格式来配置 logger,可以制定自己的配置架构. LOGGING_CONFIG 配置定义了用来配置 django logger 的可调用函数,默 ...
- DJango错误日志生成
DJango错误日志生成 setting.py设置 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': ...
- django加载本地html
django加载本地html from django.shortcuts import render from django.http import HttpResponse from django. ...
随机推荐
- TDSTCPServerTransport 的Filters
TDSTCPServerTransport 的Filters TDSTCPServerTransport 的 Filter 属性,可以对传递的数据进行加密,压缩,再修改等,有 点注入的概念.默认情况下 ...
- Cocos2d-x 3.x 图形学渲染系列十一
笔者介绍:姜雪伟.IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...
- 在Linux上配置DRBD部署
drbd 工作原理DRBD是一种块设备,能够被用于高可用(HA)之中.它相似于一个网络RAID-1功能.当你将数据写入本地 文件系统时,数据还将会被发送到网络中还有一台主机上.以同样的形式记录在一个文 ...
- 每日一支TED——弗兰斯·兰庭:为动物发声的摄影作品——2015年6月3日
今天是听TED的第11天,从今天開始简单写一下听TED的感受! 刚把得! 弗兰斯·兰庭从一个部落得到一个思想说:全部的动物都是一样的.虽然他们的外形不一样.可是内在确实一样的,他们在外面伪装,可是他们 ...
- NYOJ 330 一个简单的数学题【数学题】
/* 题目大意:求解1/n; 解题思路:写一个输出小数的算法 关键点:怎样处理小数点循环输出 解题人:lingnichong 解题时间:2014-10-18 09:04:22 解题体会:输出小数的算法 ...
- USRP通信的结构体和常量(上位机、下位机共用)
fw_common.h包括了USRP固件和上位机共用的代码,寄存器地址映射.结构体定义等 #include <stdint.h> /*! * Structs and constants f ...
- 面向画布(Canvas)的JavaScript库
面向画布(Canvas)的JavaScript库 总结 每个库各有特色,根据需求选择 学习要点 面向画布(Canvas)的JavaScript库 EaselJS 是一个封装了 HTML5 画布(C ...
- B1007 [HNOI2008]水平可见直线 几何
其实就是一道很简单的栈,只要明白什么情况会被挡住就行了.假如斜率一样则下面的被挡住,假如不一样就算交点,看那个交点在上面就行了. 题干: Description 在xoy直角坐标平面上有n条直线L1, ...
- cf2.25
T1 题意:判断给出的数中有多少不同的大于的数. content:傻逼题,5min手速 T2 题意:给出p.y,输出y~p+1中最大一个不是2-p的倍数的数. content:答案很简单,但是很难想到 ...
- nginx搭建基于http协议的视频点播服务器
1,于由自己的服务器上已经安装好nginx(具体安装方法见我的另一篇文章,Linux中安装nginx),所以不再安装. 2,下载nginx_mod_h264_streaming-2.2.7.tar.g ...