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基于phantomjs实现导入图片
May 13 Python
Python连接phoenix的方法示例
Sep 29 Python
python 日志增量抓取实现方法
Apr 28 Python
python http基本验证方法
Dec 26 Python
python对列进行平移变换的方法(shift)
Jan 10 Python
学习python可以干什么
Feb 26 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 Python
基于python plotly交互式图表大全
Dec 07 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
浅谈Python中os模块及shutil模块的常规操作
Apr 03 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 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校验ISBN码的函数代码
2011/01/17 PHP
QQ登录简单实现代码
2021/03/09 Javascript
关于document.cookie的使用javascript
2008/04/11 Javascript
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
Python的时间模块datetime详解
2017/04/17 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
python实现百度语音识别api
2018/04/10 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
python list格式数据excel导出方法
2018/10/31 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
numpy 声明空数组详解
2019/12/05 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
Java中实现多态的机制
2015/08/09 面试题
杭州时比特电子有限公司SQL
2013/08/22 面试题
CNC数控操作工岗位职责
2013/11/19 职场文书
学期自我评价
2014/01/27 职场文书
核心价值观演讲稿
2014/05/13 职场文书
2015年幼儿园班主任工作总结
2015/05/12 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android