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实现二分查找算法实例
May 26 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
python中日志logging模块的性能及多进程详解
Jul 18 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
解决python3中解压zip文件是文件名乱码的问题
Mar 22 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
浅谈Python中eval的强大与危害
Mar 13 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
Apr 06 Python
Python搭建Spark分布式集群环境
Jul 05 Python
如何获取Python简单for循环索引
Nov 21 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
Feb 06 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实现支持中文的文件下载功能示例
2017/08/30 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
javascript 清除输入框中的数据
2009/04/13 Javascript
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
linux下python抓屏实现方法
2015/05/22 Python
详解Python中的日志模块logging
2015/06/19 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
pandas的qcut()方法详解
2019/07/06 Python
基于python实现学生信息管理系统
2019/11/22 Python
pytorch进行上采样的种类实例
2020/02/18 Python
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
学生自我鉴定模板
2013/12/30 职场文书
汽车促销活动方案
2014/03/31 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2016年心理学教育培训学习心得体会
2016/01/12 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
Golang 对es的操作实例
2022/04/20 Golang