Python使用logging模块实现打印log到指定文件的方法

 更新时间:2018年09月05日 15:07:55   作者:n_laomomo  
这篇文章主要介绍了Python使用logging模块实现打印log到指定文件的方法,结合实例形式分析了Python logging模块的原理及相关日志输出操作技巧,需要的朋友可以参考下

本文实例讲述了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都将被打印。

三、正常的打印

这里只输出了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文档

文件名与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函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • python画蝴蝶曲线图的实例

    python画蝴蝶曲线图的实例

    今天小编就为大家分享一篇python画蝴蝶曲线图的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python内置进制转换函数的操作

    python内置进制转换函数的操作

    这篇文章主要介绍了python内置进制转换函数的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • python万年历实现代码 含运行结果

    python万年历实现代码 含运行结果

    这篇文章主要为大家详细介绍了python万年历实现代码,含运行结果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • python中创建和修改yaml文件的方法

    python中创建和修改yaml文件的方法

    YAML 是 "YAML Ain’t a Markup Language"的递归缩写,yaml简洁美观,是一种常用的标记语言,可以用来表达多种数据结构和配置文件,本文给大家介绍python中如何创建和修改yaml文件,感兴趣的朋友一起看看吧
    2023-11-11
  • Python基础教程(一)——Windows搭建开发Python开发环境

    Python基础教程(一)——Windows搭建开发Python开发环境

    这篇文章主要介绍了Windows如何搭建开发Python开发环境,帮助大家开始学习Python,感兴趣的朋友可以了解下
    2020-07-07
  • python抽象基类用法实例分析

    python抽象基类用法实例分析

    这篇文章主要介绍了python抽象基类用法,实例分析了Python抽象基类的使用方法与相关注意事项,需要的朋友可以参考下
    2015-06-06
  • python正则表达式的懒惰匹配和贪婪匹配说明

    python正则表达式的懒惰匹配和贪婪匹配说明

    这篇文章主要介绍了python正则表达式的懒惰匹配和贪婪匹配说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python字典DICT类型合并详解

    python字典DICT类型合并详解

    这篇文章主要为大家详细介绍了python字典DICT类型合并,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Python 绘制北上广深的地铁路线动态图

    Python 绘制北上广深的地铁路线动态图

    这篇文章主要介绍了用python制作北上广深——地铁线路动态图,文中的示例代码讲解详细,对我们的工作或学习都有一定的价值,感兴趣的同学可以学习一下
    2021-12-12
  • pandas 转换成行列表进行读取与Nan处理的方法

    pandas 转换成行列表进行读取与Nan处理的方法

    今天小编就为大家分享一篇pandas 转换成行列表进行读取与Nan处理的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10

最新评论