python logging日志模块的详解


Posted in Python onOctober 29, 2017

python logging日志模块的详解

日志级别

日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL。
DEBUG:详细的信息,通常只出现在诊断问题上
INFO:确认一切按预期运行
WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。
ERROR:更严重的问题,软件没能执行一些功能
CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行
这5个等级,也分别对应5种打日志的方法: debug 、info 、warning 、error 、critical。默认的是WARNING,当在WARNING或之上时才被跟踪。

日志格式说明

logging.basicConfig函数中,可以指定日志的输出格式format,这个参数可以输出很多有用的信息,如上例所示:
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
我在工作中给的常用格式在前面已经看到了。就是:
format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'
这个格式可以输出日志的打印时间,是哪个模块输出的,输出的日志级别是什么,以及输入的日志内容。

日志输出

有两种方式记录跟踪,一种输出控制台,另一种是记录到文件中,如日志文件。

将日志输出到控制台

在a.py写入以下信息

import logging 

logging.basicConfig(level=logging.WARNING, 
          format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') 
# use logging 
logging.info('this is a loggging info message') 
logging.debug('this is a loggging debug message') 
logging.warning('this is loggging a warning message') 
logging.error('this is an loggging error message') 
logging.critical('this is a loggging critical message') 
执行上面的代码将在Console中输出下面信息:
2017-03-16 16:58:11,266 - a.py[line:10] - WARNING: this is loggging a warning message
2017-03-16 16:58:11,266 - a.py[line:11] - ERROR: this is an loggging error message
2017-03-16 16:58:11,266 - a.py[line:12] - CRITICAL: this is a loggging critical message

【解析】

通过logging.basicConfig函数对日志的输出格式及方式做相关配置,上面代码设置日志的输出等级是WARNING级别,意思是WARNING级别以上的日志才会输出。另外还制定了日志输出的格式。

将日志输出到文件

在logging.basicConfig函数中设置好输出文件的文件名和写文件的模式。

import logging 

logging.basicConfig(level=logging.WARNING, 
          filename='./log/log.txt', 
          filemode='w', 
          format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') 
# use logging 
logging.info('this is a loggging info message') 
logging.debug('this is a loggging debug message') 
logging.warning('this is loggging a warning message') 
logging.error('this is an loggging error message') 
logging.critical('this is a loggging critical message') 
运行之后,打开该文件./log/log.txt,效果如下:
2015-05-21 17:30:20,282 - log.py[line:12] - WARNING: this is loggging a warning message
2015-05-21 17:30:20,282 - log.py[line:13] - ERROR: this is an loggging error message
2015-05-21 17:30:20,282 - log.py[line:14] - CRITICAL: this is a loggging critical message

通过配置文件设置日志模式

https://docs.python.org/2/library/logging.config.html#logging.config.dictConfig

dictconfig比fileconfig要更新

#config.conf
###############################################
[loggers]
keys=root,example01,example02

[logger_root]
level=DEBUG
handlers=hand01,hand02

[logger_example01]
handlers=hand01,hand02
qualname=example01
propagate=0

[logger_example02]
handlers=hand01,hand03
qualname=example02
propagate=0

###############################################
[handlers]
keys=hand01,hand02,hand03

[handler_hand01]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stderr,)

[handler_hand02]
class=FileHandler
level=NOTSET
formatter=form01
args=('myapp.log', 'a')

[handler_hand03]
class=handlers.RotatingFileHandler
level=INFO
formatter=form02
args=('myapp.log', 'a', 10*1024*1024, 5)

###############################################
[formatters]
keys=form01,form02
[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
datefmt=%a, %d %b %Y %H:%M:%S
[formatter_form02]
format=%(name)-12s: %(levelname)-8s %(message)s
datefmt=

主函数

import logging
import logging.config

logging.config.fileConfig("/home/razerware/configscript/config.conf")
logger = logging.getLogger("example01")
logger2 = logging.getLogger("example02")
logger.debug('This is debug message')
logger.info('This is info message')
logger.warning('This is warning message')

logger2.debug('This is debug message')
logger2.info('This is info message')
logger2.warning('This is warning message')

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python中的一些类型转换函数小结
Feb 10 Python
python简单实现旋转图片的方法
May 30 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
Jun 02 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
python Opencv将图片转为字符画
Feb 19 Python
为什么你还不懂得怎么使用Python协程
May 13 Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
基于YUV 数据格式详解及python实现方式
Dec 09 Python
如何使用python切换hosts文件
Apr 29 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 #Python
Python批量更改文件名的实现方法
Oct 29 #Python
python生成二维码的实例详解
Oct 29 #Python
python 读写中文json的实例详解
Oct 29 #Python
Python3 处理JSON的实例详解
Oct 29 #Python
深入理解Python中的*重复运算符
Oct 28 #Python
13个最常用的Python深度学习库介绍
Oct 28 #Python
You might like
BBS(php & mysql)完整版(五)
2006/10/09 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
php中apc缓存使用示例
2013/12/25 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
js调试系列 初识控制台
2014/06/18 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
2015/10/30 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
Python中用altzone()方法处理时区的教程
2015/05/22 Python
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
python爬虫的数据库连接问题【推荐】
2018/06/25 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
css3的transition属性详解
2014/12/15 HTML / CSS
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
会计专业毕业生推荐信
2013/11/05 职场文书
教师演讲稿范文
2014/01/08 职场文书
中文教师求职信
2014/02/22 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
科技工作者先进事迹
2014/08/16 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
房屋买卖协议样本
2014/11/16 职场文书
音乐会主持人开场白
2015/05/28 职场文书