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中的变量、引用、拷贝和作用域的问题
Apr 07 Python
python实现判断数组是否包含指定元素的方法
Jul 15 Python
详解Python的Twisted框架中reactor事件管理器的用法
May 25 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
django js实现部分页面刷新的示例代码
May 28 Python
python 列表输出重复值以及对应的角标方法
Jun 11 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
Python 读取用户指令和格式化打印实现解析
Sep 02 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
Python关于__name__属性的含义和作用详解
Feb 19 Python
OpenCV 之按位运算举例解析
Jun 19 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 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防注入安全代码
2008/04/09 PHP
解析PHP的session过期设置
2013/06/29 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
javascript prototype 原型链
2009/03/12 Javascript
javascript调试说明
2010/06/07 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
python字符串循环左移
2019/03/08 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
顶撞领导检讨书
2014/01/29 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
走近毛泽东观后感
2015/06/04 职场文书
《迟到》教学反思
2016/02/24 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python