执行Python Azure Functions时未显示调试日志记录DEBUG级别的日志。

9

我创建了一个Python Azure Functions应用程序。在这个应用程序中,我想要检查日志详细信息,比如DEBUGINFO等。我已经编写了一些日志记录的代码,但在执行我的Azure函数应用程序后,我无法获取任何日志。

我为记录目的编写了基本的代码,但在执行Azure Functions后,我无法在控制台上看到日志。

    import logging
    import azure.functions as func

    data = "Hello"
    logging.basicConfig(level=logging.DEBUG)
    logging.debug(data)

以上问题是否有其他解决方案或变通方法?

1
可能是 Azure 混淆了根记录器的级别。使用 logger = logging.getLogger(name) 获取不同的记录器并使用它。 - blues
@blues 我尝试了 logger = logging.getLogger(name) 但没有得到任何结果,你能帮我吗? - Akshay Godase
2个回答

5

很可能Azure已经对根记录器进行了修改,basicConfig只会创建一个带有一些合理默认值的根记录器。为解决此问题,请创建您自己独立的记录器。

import logging

logger = logging.getLogger('akshay')
logger.setLevel(logging.DEBUG)
sh = logging.StreamHandler()
sh.setLevel(logging.DEBUG)
logger.addHandler(sh)
logger.debug('Hello')
# Outputs 'Hello'

出于某种原因,Azure 文档本身不建议这样做,这太糟糕了,因为我们的团队需要采用这种方法才能使日志记录正常工作。https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-python?tabs=asgi%2Cazurecli-linux%2Capplication-level#logging - Ben G
@BenGoodman 如果你只需要设置日志级别,那么你也可以访问 Azure 使用的根记录器:rootlogger = logging.getLogger()(在 getLogger() 上没有参数表示根),然后 rootlogger.setLevel(logging.DEBUG) - blues

4

这个GitHub问题解释了解决方案:

至于这里提到的原始问题,可以通过两个步骤的组合来实现所需的行为:

  1. 在用户代码中将根记录器设置为使用调试级别(默认情况下设置为info)。
  2. 配置host.json以记录Debug消息:[...]

具体来说,这是您需要在脚本中使用的代码:

import logging
logging.Logger.root.level = 10
logging.debug("Debug message here")

这是一个有效的解决方案!在我的函数代码中加入logging.Logger.root.level = 10可以从host.json文件中实现完全的日志控制。如果没有设置为level 10,只有信息级别的日志记录会起作用。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接