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 相关文章推荐
在树莓派2或树莓派B+上安装Python和OpenCV的教程
Mar 30 Python
Python使用turtule画五角星的方法
Jul 09 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
Python中一些不为人知的基础技巧总结
May 19 Python
python控制台实现tab补全和清屏的例子
Aug 20 Python
基于python判断目录或者文件代码实例
Nov 29 Python
pygame实现飞机大战
Mar 11 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
简单了解Python多态与属性运行原理
Jun 15 Python
基于python实现图片转字符画代码实例
Sep 04 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 过滤页面中的BOM(实现代码)
2013/06/29 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
2013/03/17 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
Python写的Socks5协议代理服务器
2014/08/06 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
python制作抖音代码舞
2019/04/07 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
2016/02/27 HTML / CSS
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
小学生班会演讲稿
2014/01/09 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
工会主席事迹材料
2014/06/03 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android