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中字典和JSON互转操作实例
Jan 19 Python
简单介绍Python中的decode()方法的使用
May 18 Python
Python构建XML树结构的方法示例
Jun 30 Python
初学python的操作难点总结(新手必看篇)
Aug 03 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
python实现RabbitMQ的消息队列的示例代码
Nov 08 Python
python 列表递归求和、计数、求最大元素的实例
Nov 28 Python
python创建学生成绩管理系统
Nov 22 Python
Python3通过chmod修改目录或文件权限的方法示例
Jun 08 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
python 对xml解析的示例
Feb 27 Python
使用numpy nonzero 找出非0元素
May 14 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
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
简单学习5种处理Vue.js异常的方法
2019/06/17 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
Fabric 应用案例
2016/08/28 Python
Python selenium文件上传方法汇总
2020/11/19 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
Python玩转Excel的读写改实例
2019/02/22 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
SQL数据库笔试题
2016/03/08 面试题
服装促销活动方案
2014/02/23 职场文书
团员个人总结
2015/02/26 职场文书