【问题标题】:Python package called SignalFx, how to get _logger to print to stdout名为 SignalFx 的 Python 包,如何让 _logger 打印到标准输出
【发布时间】:2019-06-10 18:49:06
【问题描述】:

SignalFx 有一个 Python 包:link to GitHub source

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

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

_logger = logging.getLogger(__name__)

Source line in GitHub

我搜索了一段时间,不知道如何查看_logger.debug() 的输出。如何让_logger 打印到stdout?或者,在哪里可以查看日志语句?

提前谢谢你!

【问题讨论】:

    标签: python logging


    【解决方案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 的代码是如何组织的。

    【讨论】:

      【解决方案2】:

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

      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,我可以看到所有调试语句!

      【讨论】:

        猜你喜欢
        • 2013-05-01
        • 1970-01-01
        • 2015-08-31
        • 1970-01-01
        • 2012-04-14
        • 1970-01-01
        • 1970-01-01
        • 2011-12-14
        • 1970-01-01
        相关资源
        最近更新 更多