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中optionParser模块的使用方法实例教程
Aug 29 Python
Python中使用PIPE操作Linux管道
Feb 04 Python
Python语法快速入门指南
Oct 12 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
ipython和python区别详解
Jun 26 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
Flask 上传自定义头像的实例详解
Jan 09 Python
python语言是免费还是收费的?
Jun 15 Python
基于python判断字符串括号是否闭合{}[]()
Sep 21 Python
Python图像读写方法对比
Nov 16 Python
Python识别处理照片中的条形码
Nov 16 Python
Python 数据可视化之Bokeh详解
Nov 02 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
php中变量及部分适用方法
2008/03/27 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
jquery异步循环获取功能实现代码
2010/09/19 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
基于js中的原型(全面讲解)
2017/09/19 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
python多线程编程中的join函数使用心得
2014/09/02 Python
Python装饰器decorator用法实例
2014/11/10 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
公务员的自我鉴定
2013/10/26 职场文书
就业表自我评价分享
2014/02/06 职场文书
学校门卫岗位职责
2014/03/16 职场文书
小区文明倡议书
2014/05/16 职场文书
初一新生军训方案
2014/05/22 职场文书
科技工作者先进事迹
2014/08/16 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
python基础之类属性和实例属性
2021/10/24 Python
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server