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中用Spark模块的使用教程
Apr 13 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
Python SVM(支持向量机)实现方法完整示例
Jun 19 Python
Python实现手写一个类似django的web框架示例
Jul 20 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
python的命名规则知识点总结
Oct 04 Python
python实现操作文件(文件夹)
Oct 31 Python
pandas实现将日期转换成timestamp
Dec 07 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
python 动态渲染 mysql 配置文件的示例
Nov 20 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
php中$this->含义分析
2009/11/29 PHP
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
2015/03/24 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
python与pycharm有何区别
2020/07/01 Python
8种常用的Python工具
2020/08/05 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
教师个人事迹材料
2014/12/17 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
教师创先争优承诺书
2015/04/27 职场文书
2015年大学团支部工作总结
2015/05/13 职场文书
被告代理词范文
2015/05/25 职场文书
护理自荐信
2019/05/14 职场文书
部分武汉产收音机展览
2022/04/07 无线电