python中如何记录日志?

2021-10-26 15:47发布

日志是一种可以追踪某些软件运行时所发生事件的方法。一条日志信息对应的是一个事件的发生,而一个事件通常需要包括以下几个内容:事件发生时间事件发生位置事件的严重程度--日志级别事件内容

logging模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统。

logging模块日志等级:

日志等级(level

描述

DEBUG

最详细的日志信息,一般用于问题定位

INFO

详细程度次于DEBUG,记录关键节点信息

WARNING

警告,当某些不期望的事情发生时记录信息,此时程序仍正常运行

ERROR

由于一个严重的问题导致某些功能不能正常使用时所记录的信息

CRITICAL

由于严重错误,导致应用程序都无法正常运行时所记录的信息

 

 

 

logging日志模块四大组件

在介绍logging模块的日志流处理流程之前,我们先来介绍下logging模块的四大组件:

 

组件名称

对应类名

功能描述

日志器

Logger

提供了应用程序可一直使用的接口

处理器

Handler

logger创建的日志记录发送到合适的目的输出

过滤器

Filter

提供了更细粒度的控制工具来决定输出哪条日志记录,丢弃哪条日志记录

格式器

Formatter

决定日志记录的最终输出格式

 

 

logging模块就是通过这些组件来完成日志处理的,上面所使用的logging模块级别的函数也是通过这些组件对应的类来实现的。

 

这些组件之间的关系描述:

· 日志器(logger)需要通过处理器(handler)将日志信息输出到目标位置,如:文件、sys.stdout、网络等;

· 不同的处理器(handler)可以将日志输出到不同的位置;

· 日志器(logger)可以设置多个处理器(handler)将同一条日志记录输出到不同的位置;

· 每个处理器(handler)都可以设置自己的过滤器(filter)实现日志过滤,从而只保留感兴趣的日志;

· 每个处理器(handler)都可以设置自己的格式器(formatter)实现同一条日志以不同的格式输出到不同的地方。

 

简单点说就是:日志器(logger)是入口,真正干活儿的是处理器(handler),处理器(handler)还可以通过过滤器(filter)和格式器(formatter)对要输出的日志内容做过滤和格式化等处理操作。

 

logging模块定义的格式字符串字段

字段

格式

作用

asctime

%(asctime)s

日志事件发生的时间--人类可读时间,如:2021-9-28 14:26:33

levelname

%(levelname)s

该日志记录的文字形式的日志级别('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'

message

%(message)s

警告,当某些不期望的事情发生时记录信息,此时程序仍正常运行

 

 

代码实现:

 



 

 

记录日志:

 



 

日志文件显示结果: