为什么一个 logger 的 handlers 是空的,但是还是可以往标准输出输出内容呢?

命名为 101.py

from nameko.timer import timer


class 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 101
starting services: keyword_service
哈哈哈哈
[]
哈哈哈哈
[]
哈哈哈哈
[]
哈哈哈哈
[]

很奇怪,明明 handlers 是空列表,但是 「哈哈哈哈」 还是输出到了标准输出中

为什么?我只知道需要输出到标准输出,必须通过配置 handlers

难道还有不用配置 handlers 就可以输出到标准输出的方式?


不通过 nameko run 101 运行,而是直接 python 101.py 运行发现又是没有任何输出的

from nameko.timer import timer
from 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"
[]
阅读 411
1 个回答

handler 确实不是必须的

from nameko.timer import timer
from 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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题