python - logging模块之日志

一、简介

    python 的日志模块是 logging,属于标准库,无需安装,使用时直接导入即可。logging 模块包括 Loggers(日志记录器)、Handlers(日志处理器)、Filters(日志过滤器)和 Formatters(日志格式化器)配置文件。

Logger记录器:应用程序代码能直接调用日志接口,最常用的操作有两类:配置和发送日志消息

handler处理器:将(记录器产生的)日志记录(log record)发送至合适的目的地(destination )常用的是StreamHandler和FileHandler,可以简单理解为一个是console和文件日志,一个打印在调试窗口上,一个记录在一个文件上

filter过滤器:提供了更好的粒度控制,它可以决定输出哪些日志记录。

formatter格式化器:指明了最终输出中日志记录的布局。指定日志记录输出的具体格式。工作中常用的格式:fmt = logging.Formatter('%(asctime)s -【%(filename)s-->line:%(lineno)d】-%(levelname)s:%(message)s')

日志收集流程图解

日志收集流程

二、logging模块日志级别介绍

日志一共分成5个登记,从低到高分别是:

1、DEBUG:输出详细的运行情况,主要用于调试   

2、INFO:确认一切按预期运行,一般用于输出重要运行情况

3、WARNING:一些意想不到的事情发生了(比如:“警告:内存空间不足”)但是这个软件还能按预期工作,在不久的将来会出现问题

4、ERROR:发生了错误,软件没能执行一些功能,还可以继续执行

5、CRIICAL:一个严重的错误,表明程序本身可能无法继续运行    

这5个等级,也分别对应5种打日子的方法:debug、info、warning、error、critical。默认的是WARNING级别的日志,当在WARNING或之上的等级才能被记录

三、日志输出渠道

有两种方式记录跟踪,一种输出控制台,另一种是记录到文件中,如日志文件

Handler处理器常用的是 StreamHandler FileHandler,可以简单理解为一个是console,一个是文件日志,一个打印在调试窗口上,一个记录在一个文件上

1、输出到控制台

由 getLogger() 的源码可知,获取 logger 对象,创建日志收集器时,可以传一个参数给收集器命名,就会得到一个自定义的日志收集器;若没有传参数则得到的是默认收集器 root,收集的等级是WARNING等级及以上的日志;这个参数可传可不传,传了得到的就是自定义的收集器,不传得到的就是默认的收集器

输出到控制台

2、输出到文件中

此时控制台打印的数据为空,在python左侧的列表页会在相应的目录下生成一个log.txt的文件,可以在文件中查看日志

输出到文件

四、日志输出格式

可以通过logging.Formatter 指定日志输出的格式,这个参数可以输出很多有用的信息,如下:

%(name)s:收集器名称

%(levelno)s:打印日志级别的数值

%(levelname)s:打印日志级别名称

%(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]

%(filename)s:打印当前执行程序名

%(funcName)s:打印日志的当前函数

%(lineno)d:打印日志的当前行号

%(asctime)s:打印日志的时间

%(thread)d:打印线程ID

%(threadName)s:打印线程名称

%(process)d:打印进程ID

%(message)s:打印日志信息

在工作中常用的格式如下:

fmt = logging.Formatter('%(asctime)s -【%(filename)s-->line:%(lineno)d】-%(levelname)s:%(message)s')

这个格式可以输出日志的打印时间、是哪个模块的哪一行输出的、输出的日子级别是什么以及输出的日志内容

格式化输出日志
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容