前言
本文主要讲解Python3logging模块中root logger的一些小知识. 在阅读本文之前希望读者了解logging模块的基本用法.
正文
root logger是logging 模块中最主要的部分, 也是无需配置可以直接使用的logger, 今天主要讲解一下root logger的默认配置.
1. 如何访问root logger?
在Python中, root logger是一个Logger对象, 而所有的配置都是其属性, 所以了解root logger的第一步就是访问这个对象, 有以下两种作法:
# 这是访问所有logger的通用方法, 当没有参数时, 默认访问`root logger`
In [1]: import logging
In [6]: logging.getLogger()
Out[6]:
# root logger 也是 logging 模块的属性, 我们也可以直接点选
In [12]: logging.root
Out[12]:
# 二者等效
In [15]: logging.getLogger() == logging.root
Out[15]: True
2. 如何访问root logger 的Handler?
Handler的主要作用是将我们的LogRecord发送到指定位置, 而我们在使用root logger时, 默认是显示在终端中的, 那么这个默认值是在哪里设置的? 终端中显示的是stdout 还是 stderr?
首先做测试:
In [16]: logging.root.handlers
Out[16]: []
我们可以看到, Handler是存放在一个列表中, 但是root logger的默认值没有任何Handler, 那么是谁处理的我们的