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 相关文章推荐
python正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
Python中%是什么意思?python中百分号如何使用?
Mar 20 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
python中class的定义及使用教程
Sep 18 Python
解决pyshp UnicodeDecodeError的问题
Dec 06 Python
python装饰器的特性原理详解
Dec 25 Python
python画图常规设置方式
Mar 05 Python
python实现图像拼接功能
Mar 23 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
Python内置异常类型全面汇总
May 28 Python
Python如何读写CSV文件
Aug 13 Python
Python调用REST API接口的几种方式汇总
Oct 19 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
smarty实例教程
2006/11/19 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
PHP查询分页的实现代码
2017/06/09 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python操作列表的常用方法分享
2014/02/13 Python
python引用DLL文件的方法
2015/05/11 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
使用django实现一个代码发布系统
2019/07/18 Python
eBay美国官网:eBay.com
2020/10/24 全球购物
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
毕业生简历自我评价范文
2014/04/09 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
八一建军节主持词
2015/07/01 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏