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

为什么一个 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"

[]


回答:

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

以上是 为什么一个 logger 的 handlers 是空的,但是还是可以往标准输出输出内容呢? 的全部内容, 来源链接: utcz.com/p/939029.html

回到顶部