参考网址
www.pynote.net/archives/19…
logger对象的创建,以及层级关系(父子关系)
我们用logging库包的getLogger方法来创建logger对象,
然后通过logger对象的名字,我们可以实现不同logger对象之间的层次关系,或是父子关系。

从上图可以知道,如果getLogger这个函数如果不带参数(没有入参,没有指定logger对象的名称),返回的就是默认的root logger.
层次化的实现,就是通过在名称上加点(.)
>>> log_1 = logging.getLogger('1')
>>> log_12 = logging.getLogger('1.2')
>>> log_12.parent
<Logger 1 (WARNING)>
>>> log_1.parent
<RootLogger root (WARNING)>
层次化的logger有个特性,子logger的日志默认要传递给父节点处理,会一直传递下去直到root。
默认logger.propagate=True,这个开始用来控制传递。
关于日志传递,我看网上有很多人都发现这个特性很容易导致重复记录。
我想说另一个细节,传递的时候,是直接传递给父logger的handler,而handler的默认level是NOTSET。