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使用7z解压软件备份文件脚本分享
Feb 21 Python
Python中Django框架下的staticfiles使用简介
May 30 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
python验证码识别教程之滑动验证码
Jun 04 Python
Python3转换html到pdf的不同解决方案
Mar 11 Python
python安装pil库方法及代码
Jun 25 Python
Python转换时间的图文方法
Jul 01 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
Python 数据的累加与统计的示例代码
Aug 03 Python
Python的flask接收前台的ajax的post数据和get数据的方法
Apr 12 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 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表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
PHP云打印类完整示例
2016/10/15 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
php使用递归与迭代实现快速排序示例
2014/01/23 Python
用python 制作图片转pdf工具
2015/01/30 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
python实现自动发送报警监控邮件
2018/06/21 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
2014婚礼司仪主持词
2014/03/14 职场文书
小学生家长寄语
2014/04/02 职场文书
邀请函样本
2015/02/02 职场文书
500字小学生检讨书
2015/02/19 职场文书
停电放假通知
2015/04/14 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
2019自荐信范文集锦!
2019/07/03 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
2021/11/21 数码科技
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js