文件结构
- run.py
- b
-- __init__.py
run.py
1 import logging 2 3 import b 4 5 log = logging.getLogger("") 6 7 tmp = logging.FileHandler('log.txt') 8 log.addHandler(tmp) 9 10 log.warning("123") 11 12 sample = b.b() 13 print sample.foo()
__init__.py
1 import logging 2 3 log = logging.getLogger("b") 4 5 class b: 6 def __init__(self): 7 pass 8 9 def foo(self): 10 log.warning(1111) 11 return "Foo in class b"
run.py 中的 addHandler 可以作用到 package b 下的文件,因为 getLogger("b) 也会 getLogger(""), 如果 run.py 中定义为 getLogger("a") 就获取不到了
Logger对象组织为一种层次结构 如 app.net.client 会有三个不同的 logger 对象 -- app || app.net || app.net.client