Python 中 logging 模块使用详情


Posted in Python onMarch 03, 2022

1.为什么要用logging模块

在实际应用中,日志文件十分重要,通过日志文件,我们知道程序运行的细节;同时,当程序出问题时,我们也可以通过日志快速定位问题所在。在我们写程序时,也可以借助 logging 模块的输出信息来调试代码。

但是很多人还是在程序中使用print()函数来输出一些信息,比如:

print 'Start reading database'
records = model.read_recrods()
print '# records', records
print 'Updating record ...'
model.update_records(records)
print 'done'

这样用的话缺点很明显,当程序写好运行时,我们要把这些print()函数删掉,在简单的的程序中用还行,当程序比较复杂时,这个办法很低效。

如果使用logging模块,看看效果

import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

logger.info('Start reading database')
# read database here
records = {'john': 55, 'tom': 66}
logger.debug('Records: %s', records)
logger.info('Updating records ...')
# update records here
logger.info('Finish updating records')

运行结果如下:

INFO:__main__:Start reading database
INFO:__main__:Updating records ...
INFO:__main__:Finish updating records

你也许会问,这和print()函数有什么区别呢?区别就在于,logging模块可以通过改变level来控制一些语句是否被输出,比如当我们把level改成DEBUG级别:

logging.basicConfig(level=logging.DEBUG)

得到输出如下:

INFO:__main__:Start reading database
DEBUG:__main__:Records: {'john': 55, 'tom': 66}
INFO:__main__:Updating records ...
INFO:__main__:Finish updating records

2.logging模块介绍

logging 模块是python自带的一个包,因此在使用的时候,不必安装,只需要import即可。有5个level,分别是debug,主要是查看一下程序运行的信息,一般是调试程序要看的信息;info,是我们看程序是否如预料执行的信息;warn,意料之外的,但是不影响程序运行;errorcritical就是一些比较严重的问题,会影响程序运行。默认leval是warn,这个时候debug级别和info级别就不会被输出到日志里了。如果想要看到这些信息,就需要进行一些设置。

3.基础设置

我们主要调用basicConfig(***kwargs*)这个函数对logging进行设置。

常用的参数如下:

  • level:主要调整logging的级别
  • filename:输出日志的路径
  • filemode:直接写入还是追加写入
  • format:输出的格式

我们通过调整format,可以输出我们想要的格式,比如:

import logging

logging.basicConfig(format='%(asctime)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S')
logging.warning('Admin logged out')

结果是:

12-Jul-18 20:53:19 - Admin logged out

这就是在format参数中设置了时间的,所以得到了时间,我们可以输出多种想要的信息

总结:

本文主要介绍了logging模块的基础用法,除非是自己写的小脚本中我们使用print()函数,其他情况下最好还是用logging模块来打印信息,输出日志吧。

到此这篇关于 Python 中 logging 模块使用详情的文章就介绍到这了,更多相关 Python 中 logging 模块使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
详解Python迭代和迭代器
Mar 28 Python
Python while 循环使用的简单实例
Jun 08 Python
python使用PyCharm进行远程开发和调试
Nov 02 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
TensorFlow实现Batch Normalization
Mar 08 Python
python常用排序算法的实现代码
Nov 08 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
Python图像处理库PIL的ImageFilter模块使用介绍
Feb 26 Python
python 生成任意形状的凸包图代码
Apr 16 Python
django ORM之values和annotate使用详解
May 19 Python
用pip给python安装matplotlib库的详细教程
Feb 24 Python
分享7个 Python 实战项目练习
Mar 03 #Python
python工具dtreeviz决策树可视化和模型可解释性
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
python机器学习实现oneR算法(以鸢尾data为例)
Mar 03 #Python
详解python的异常捕获
Mar 03 #Python
分享提高 Python 代码的可读性的技巧
Mar 03 #Python
使用python创建股票的时间序列可视化分析
You might like
学习使用PHP数组
2006/10/09 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
javascript RadioButtonList获取选中值
2009/04/09 Javascript
Javascript 圆角div的实现代码
2009/10/15 Javascript
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
nodejs中实现sleep功能实例
2015/03/24 NodeJs
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
python读取Excel表格文件的方法
2019/09/02 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
劳资人员岗位职责
2013/12/19 职场文书
老师自我鉴定范文
2013/12/25 职场文书
幼儿园毕业家长感言
2014/02/10 职场文书
高中生评语大全
2014/04/25 职场文书
实习护士自荐信
2015/03/25 职场文书
教学副校长工作总结
2015/08/13 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
JavaScript原型链详解
2021/11/07 Javascript
Redis Stream类型的使用详解
2021/11/11 Redis