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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
Python命令启动Web服务器实例详解
Feb 23 Python
python实现多进程代码示例
Oct 31 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
基于Python 中函数的 收集参数 机制
Dec 21 Python
Python脚本破解压缩文件口令实例教程(zipfile)
Jun 14 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
Jul 07 Python
python 浮点数四舍五入需要注意的地方
Aug 18 Python
python3实现飞机大战
Nov 29 Python
pytorch __init__、forward与__call__的用法小结
Feb 27 Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Apr 04 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 引用(&)详解
2009/11/20 PHP
php 读取文件乱码问题
2010/02/20 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
js实现密码强度检验
2017/01/15 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
Django组件content-type使用方法详解
2019/07/19 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
帕克纽约:PARKER NY
2018/12/09 全球购物
毕业生多媒体设计求职信
2013/10/12 职场文书
小学生检讨书大全
2014/02/06 职场文书
如何写好建议书
2014/03/13 职场文书
毕业论文致谢词
2015/05/14 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
七年级作文之秋游
2019/10/21 职场文书