在上篇文章里说完了日志实例Logger
和日志管理Manager
,现在该提到Handler
了。Handler
是日志信息的消费者,单个Logger
实例注册多个Handler
,每生成一个LogRecord
,就会被合法的Handler
消费,在不同地方打印出日志信息。
要研究Handler
,首先需要看下基类的实现:
1 | class Handler(Filterer): |
Handler
会通过自带的重入锁限制日志记录被串行处理。Handler
也是继承Filterer
,首先会通过filter
过滤日志是否满足Handler
的要求,如果合法,然后调用emit
方法处理日志。
emit
方法在基类是NotImplemented
,需要子类加以实现。因此接下来我们具体抽几个例子来看。