Python使用logging模块实现打印log到指定文件的方法


Posted in Python onSeptember 05, 2018

本文实例讲述了Python使用logging模块实现打印log到指定文件的方法。分享给大家供大家参考,具体如下:

可能我们经常会使用print来输出信息到窗口,但当我们有很多个py文件需要运行,项目比较庞大的到时候,print简直就是太low了点了。那么我们可以使用强大的logging模块,把输出到指定的本地pc某个路径的文件中。

一、logging的框架

1、 Loggers: 可供程序直接调用的接口,app通过调用提供的api来记录日志

2、 Handlers: 决定将日志记录分配至正确的目的地

3、 Filters:对日志信息进行过滤,提供更细粒度的日志是否输出的判断

4、 Formatters: 制定最终记录打印的格式布局

二、Log级别

系统默认有6个级别,优先级:

CRITICAL    50

ERROR      40

WARNING   30

INFO        20

DEBUG      10

NOTSET     0

设置要打印的log时只需要设置优先级,比如设置打印INFO,那么比INFO优先级高的WARNING/ERROR/CRITICAL都将被打印。

三、正常的打印

Python使用logging模块实现打印log到指定文件的方法

这里只输出了ERROR和WARNING的信息,是因为logging默认的输出级别是WARNING。

四、输出到指定文件

来看看这样写的代码:

import logging
import unittest
class lgtest(unittest.TestCase):
  logging.basicConfig(filename='../LOG/'+__name__+'.log',format='[%(asctime)s-%(filename)s-%(levelname)s:%(message)s]', level = logging.DEBUG,filemode='a',datefmt='%Y-%m-%d%I:%M:%S %p')
  def test(self):
    logging.error("这是一条error信息的打印")
    logging.info("这是一条info信息的打印")
    logging.warning("这是一条warn信息的打印")
    logging.debug("这是一条debug信息的打印")
if __name__=='__main__':
  unittest.main()

运行后在LOG/__main__.log文件中生成如下内容:

[2018-09-0503:21:07 PM-Logout.py-ERROR:这是一条error信息的打印]
[2018-09-0503:21:07 PM-Logout.py-INFO:这是一条info信息的打印]
[2018-09-0503:21:07 PM-Logout.py-WARNING:这是一条warn信息的打印]
[2018-09-0503:21:07 PM-Logout.py-DEBUG:这是一条debug信息的打印]

使用logging.basicConfig来指定要输出的文件以及log的输出形式、包括时间格式、日志级别等等。

  • Filename:指定路径的文件。这里使用了+—name—+是将log命名为当前py的文件名
  • Format:设置log的显示格式(即在文档中看到的格式)。分别是时间+当前文件名+log输出级别+输出的信息
  • Level:输出的log级别,优先级比设置的级别低的将不会被输出保存到log文档中
  • Filemode: log打开模式
    • a:代表每次运行程序都继续写log。即不覆盖之前保存的log信息。
    • w:代表每次运行程序都重新写log。即覆盖之前保存的log信息

五、最终的log文档

Python使用logging模块实现打印log到指定文件的方法

文件名与py文件名相同,因为basicConfig里面使用了__name__来获取的。

我们来看看内容,这是运行了两次py文件的内容:

[2018-09-0503:21:07 PM-Logout.py-ERROR:这是一条error信息的打印]
[2018-09-0503:21:07 PM-Logout.py-INFO:这是一条info信息的打印]
[2018-09-0503:21:07 PM-Logout.py-WARNING:这是一条warn信息的打印]
[2018-09-0503:21:07 PM-Logout.py-DEBUG:这是一条debug信息的打印]
[2018-09-0503:22:43 PM-Logout.py-ERROR:这是一条error信息的打印]
[2018-09-0503:22:43 PM-Logout.py-INFO:这是一条info信息的打印]
[2018-09-0503:22:43 PM-Logout.py-WARNING:这是一条warn信息的打印]
[2018-09-0503:22:43 PM-Logout.py-DEBUG:这是一条debug信息的打印]

运行一次会有4个信息打印出来,因为filemode设置成了a,所以再次运行时不会覆盖之前的log信息,就有8条信息了。

Ok,log输出到文档就这么简单。当然大家如果弄熟了可以自己写记录器、过滤器等。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
探索Python3.4中新引入的asyncio模块
Apr 08 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
pycharm中连接mysql数据库的步骤详解
May 02 Python
Python内置模块turtle绘图详解
Dec 09 Python
python实现kMeans算法
Dec 21 Python
Python聊天室程序(基础版)
Apr 01 Python
Python实现迭代时使用索引的方法示例
Jun 05 Python
Python数据类型之List列表实例详解
May 08 Python
将python安装信息加入注册表的示例
Nov 20 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
python中pickle模块浅析
Dec 29 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 #Python
python使用__slots__让你的代码更加节省内存
Sep 05 #Python
Python中__slots__属性介绍与基本使用方法
Sep 05 #Python
python使用xlrd和xlwt读写Excel文件的实例代码
Sep 05 #Python
python 3调用百度OCR API实现剪贴板文字识别
Sep 04 #Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
Sep 04 #Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 #Python
You might like
杏林同学录(六)
2006/10/09 PHP
php引用地址改变变量值的问题
2012/03/23 PHP
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
2016/02/25 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
解决node-sass偶尔安装失败的方法小结
2018/12/05 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
python3.3实现乘法表示例
2014/02/07 Python
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
python os.path模块常用方法实例详解
2018/09/16 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
python groupby 函数 as_index详解
2019/12/16 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
实习单位接收函
2014/01/11 职场文书
高中综合实践活动总结
2014/07/07 职场文书
技术支持岗位职责
2015/02/13 职场文书
工作证明格式范文
2015/06/15 职场文书
个人欠条范本
2015/07/03 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
Python Numpy之linspace用法说明
2021/04/17 Python
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers