为什么一个 logger 的 handlers 是空的,但是还是可以往标准输出输出内容呢?
命名为 101.py
from nameko.timer import timerclass KeywordService:
name = 'keyword_service'
@timer(1)
def print_log_ingo(self):
from nameko.runners import _log
_log.info('哈哈哈哈')
print(_log.handlers)
运行 nameko run 101
需要安装 nameko 可以通过 pip install nameko
输出如下:
╰─➤ nameko run 101starting services: keyword_service
哈哈哈哈
[]
哈哈哈哈
[]
哈哈哈哈
[]
哈哈哈哈
[]
很奇怪,明明 handlers 是空列表,但是 「哈哈哈哈」 还是输出到了标准输出中
为什么?我只知道需要输出到标准输出,必须通过配置 handlers
难道还有不用配置 handlers 就可以输出到标准输出的方式?
不通过 nameko run 101
运行,而是直接 python 101.py
运行发现又是没有任何输出的
from nameko.timer import timerfrom nameko.runners import _log
_log.info('哈哈哈哈')
print(_log.handlers)
输出如下:
(ideaboom) ╭─ponponon@MBP13ARM ~/Desktop/code/me/ideaboom ‹feature/svddb*› ╰─➤ python -u "/Users/ponponon/Desktop/code/me/ideaboom/101.py"
[]
回答:
handler 确实不是必须的
from nameko.timer import timerfrom nameko.runners import _log
import logging
logging.basicConfig(level=logging.INFO, format='%(message)s')
_log.info('哈哈哈哈')
print(_log.handlers)
改成上面那样,就 ok 了
(ideaboom) ╭─ponponon@MBP13ARM ~/Desktop/code/me/ideaboom ‹feature/svddb*› ╰─➤ python -u "/Users/ponponon/Desktop/code/me/ideaboom/101.py"
哈哈哈哈
[]
这也是 nameko 的实现方式:https://github.com/nameko/nameko/blob/master/nameko/cli/run.py
以上是 为什么一个 logger 的 handlers 是空的,但是还是可以往标准输出输出内容呢? 的全部内容, 来源链接: utcz.com/p/939029.html