日志库采用了模块化的方法,包括了logger,handlers,filters,和formatters四个组件。
- Loggers是个开放的接口,直接面向代码使用。
- Handlers发送日志记录到合适的目的地。
- Filters提供过滤设备,决定了日志的那些内容可以输出。
- Formatters设置了日志最后输出的格式。
log事件在一条log记录中是通过了logger,handlers,filters,和formatters流转的。
logging通过调用Logger类实例(以下称为记录器)的方法起作用。每个实例有一个名字,在概念上,它们在一个命名空间中,按照句点作为分隔符进行分分层。例如,一个叫scan的logger,是'scan.text',‘scan.html’和'scan.pdf'的父类.Logger的名字可以任意起名,代表着一条被记录的Log信息的产生源头。
一般传统的给loggers命名方法是用当前模块的名称
1 logger = logging.getLogger(__name__)
这样可以直观的看到事件发生的位置
Logging的流程
Logger组件介绍:
- Logger直接面向应用的代码,所以当程序运行时,可以记录相关的日志信息
- 根据严重程度和过滤组件,logger决定日志信息的相关展示
- logger将相关的日志传递给对应的日志处理程序
Logger两个重要的分类:cofiguration和message sending
- 1、配置
- Logger.setLevel() 声明了log信息展示的最低的级别
- Logger.addHandler() 和 Logger.removeHandler() 添加和移除绑定到logger上的handler组件
- Logger.addFilter() 和 Logger.removeFilter() 添加和移除绑定到logger上的filter组件
- 2、创建log信息
- Logger.debug(),Logger.info(),Logger.warning(),Logger.error(),Logger.critical()
getLogger() :返回一个带有名字的logger实例相关内容