Python套件称为SignalFx,如何让_logger列印至stdout

时间:2019-06-10 18:49:06

标签: python logging

SignalFx有一个Python软件包:link to GitHub source

在其中一个文件中,它创建一个使用Python的_logger库的logging对象。该软件包有许多_logger.debug()语句,可用于调试连通性问题。

代码将_logger实例化为全局变量,如下所示:

_logger = logging.getLogger(__name__)

Source line in GitHub

我搜索了一段时间,无法弄清楚如何查看_logger.debug()的输出。如何获得_logger打印到stdout?或者,在哪里可以查看日志语句?

提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可能需要在使用SignalFx的应用程序中配置日志记录。例如,这可能在您的主程序脚本中起作用:

if __name__ == '__main__':
    import logging  # if not done already

    logging.basicConfig(level=logging.DEBUG, format='%(name)s %(message)s')

    # and then the rest of your script's code

如果这没有产生结果,则可能需要提供更多有关如何组织使用SignalFx的代码的信息。

答案 1 :(得分:0)

好吧,回到这一点,我终于有一个基于两个问题的答案:

  1. 这里的问题:How to use logging.getLogger(__name__) in multiple modules
  2. 答案在这里:https://stackoverflow.com/a/56840272/11163122

第一个问题很有用,因为我意识到了为什么软件包使用getLogger(__name__)。这也让我意识到我只需要访问名为signalfx的软件包的基本记录器即可。

第二个答案很有用,因为我意识到我基本上可以导入记录器,而无需从SignalFx导入_logger

我最终的解决方案(在我的代码中)是

sfx_logger = logging.getLogger("signalfx")
sfx_logger.setLevel(logging.DEBUG)
sfx_logger.addHandler(logging.StreamHandler(sys.stdout))

现在,SignalFx记录器将打印到stdout,我可以看到所有调试语句!