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模块之paramiko实例代码
Jan 31 Python
几种实用的pythonic语法实例代码
Feb 24 Python
python 实现在Excel末尾增加新行
May 02 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
Python3最长回文子串算法示例
Mar 04 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
python openCV获取人脸部分并存储功能
Aug 28 Python
python树的同构学习笔记
Sep 14 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 Python
Python连接Impala实现步骤解析
Aug 04 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
Sep 25 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
菜鸟学PHP之Smarty入门
2007/01/04 PHP
简单的PHP图片上传程序
2008/03/27 PHP
PHP中读写文件实现代码
2011/10/20 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
PHP中overload与override的区别
2017/02/13 PHP
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
深入Python函数编程的一些特性
2015/04/13 Python
python基于右递归解决八皇后问题的方法
2015/05/25 Python
python创建临时文件夹的方法
2015/07/06 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
我们是伦敦女孩:WalG
2018/01/08 全球购物
为什么需要版本控制?
2013/08/08 面试题
《李广射虎》教学反思
2014/04/27 职场文书
计算机软件专业求职信
2014/06/10 职场文书
人事专员岗位说明书
2014/07/29 职场文书
长城的导游词
2015/01/30 职场文书
2015年大学生工作总结
2015/04/21 职场文书
企业员工辞职信范文
2015/05/12 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫