当前位置: 首页 > 知识库问答 >
问题:

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

夔修伟
2023-10-07

命名为 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"[]

共有1个答案

许华清
2023-10-07

handler 确实不是必须的

from nameko.timer import timerfrom nameko.runners import _logimport logginglogging.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

 类似资料:
  • 问题内容: 我需要在Hudson中运行Shell脚本。该脚本需要用户回答。为了给出自动答案,我做了以下命令行: 这在Ubuntu终端中运行良好。但是,当我在Hudson作业中使用相同的命令时,脚本将自动执行所需的所有工作,但是最后,我得到了这两行错误: 这导致我的哈德森工作失败。 如何更改命令行以在Hudson中正常工作? 问题答案: 但是,您如何解释我在 本地 运行脚本时没有收到此错误,而从Hu

  • 它给出的输出为“cricket”。但我不明白为什么?http://ideone.com/fteahg

  • 问题内容: 好的,这是我的问题。我有一个简单的jQuery Ajax请求,当我将DataType设置为“ JSON”时我无法工作。 这实际上是我的ajax文件。该如下所示: 当我运行jQuery脚本时,我收到了Firebug的200:OK响应,而当我查看响应时,得到了以下内容: 但是,在.body-item div中没有​​显示任何内容,也没有尝试使用alert()。 另外,如果我运行相同的代码而

  • 问题内容: 什么是输出缓冲?为什么在PHP中使用它? 问题答案: Web开发人员的输出缓冲,初学者指南 如果没有输出缓冲(默认),则HTML将通过脚本逐步地作为PHP进程发送到浏览器。使用输出缓冲,您的HTML存储在一个变量中,并在脚本末尾作为一个片段发送到浏览器。 Web开发人员的输出缓冲优势 单独打开输出缓冲可减少下载和呈现HTML所需的时间,因为在PHP处理HTML时,不会将其分段发送给浏览

  • 为什么它的输出是无限的?有人知道应该做些什么来使这个有限吗?

  • 问题内容: 我正在调用在控制台/标准输出中打印一些字符串的函数。我需要捕获此字符串。我无法修改执行打印的功能,也无法通过继承更改运行时行为。我找不到任何允许我执行此操作的预定义方法。 JVM是否存储打印内容的缓冲区? 有谁知道可以帮助我的Java方法吗? 问题答案: 您可以使用写入字符串缓冲区的流临时替换System.err或System.out。