日志是一种可以追踪某些软件运行时所发生事件的方法。一条日志信息对应的是一个事件的发生,而一个事件通常需要包括以下几个内容:事件发生时间、事件发生位置、事件的严重程度--日志级别、事件内容。
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 | 警告,当某些不期望的事情发生时记录信息,此时程序仍正常运行 |
代码实现:
记录日志:
日志文件显示结果:
以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了
各位想获取资料的朋友请点赞 + 评论 + 收藏,三连!
三连之后我会在评论区挨个私信发给你们~