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