Log*_*ead 6 python logging module
我用Google搜索并查看了默认文档,但我无法弄清楚为什么这不会产生三行日志记录:
# main.py
import logging
import apple
import banana
log = logging.getLogger('main')
log.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
log.addHandler(ch)
log.info("I'm in main!")
Run Code Online (Sandbox Code Playgroud)
# apple.py
import logging
log = logging.getLogger('main.apple')
log.info("I'm here in apple!")
Run Code Online (Sandbox Code Playgroud)
# banana.py
import logging
log = logging.getLogger('main.banana')
log.info("I'm here in banana!")
Run Code Online (Sandbox Code Playgroud)
# output
2011-09-03 16:40:54,062 - main - INFO - I'm in main!
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
StreamHandler在导入之后才设置handler().因此,导入模块中的日志记录命令不会产生任何输出.一些处理程序打印到文件,其他处理程序通过网络进行通信,一些处理程序打印到控制台.如果没有将处理程序添加到记录器中,导入模块中的日志记录语句就无法知道该怎么做.
如果模块中的日志记录语句驻留在类或函数中,就像它们链接到的示例中那样,那么可以看到输出,因为在调用模块类或函数时,处理程序已添加到记录器中.
| 归档时间: |
|
| 查看次数: |
1846 次 |
| 最近记录: |