如何更改 Azure Functions 中的日志级别

How to change log level in Azure Functions

我们正在开发部署到 Azure Function Apps 的多个 Quarkus(撰写本文时为 2.5.4)应用程序。

我们注意到我们所有的日志,无论代码的严重性如何,都会在应用程序洞察中显示为信息。

public class ExampleClass {
    private static final Logger logger = LoggerFactory.getLogger(ExampleClass.class);

    public void welcome(@NotNull String name) {
        logger.trace("TRACE hello to {}", name);
        logger.debug("DEBUG hello to {}", name);
        logger.info("INFO hello to {}", name);
        logger.warn("WARN hello to {}", name);
        logger.error("ERROR hello to {}", name);
    }
}

我们已将 jboss 日志管理器添加到我们的依赖项中:

    <dependency>
      <groupId>org.jboss.slf4j</groupId>
      <artifactId>slf4j-jboss-logmanager</artifactId>
    </dependency>

当我检查日志时,它是这样显示的

2022-02-24T07:58:14.325 [Information] 2022-02-24T07:58:14.308 [INFO] INFO hello to name
2022-02-24T07:58:14.325 [Information] 2022-02-24T07:58:14.308 [WARN] WARN hello to name
2022-02-24T07:58:14.325 [Information] 2022-02-24T07:58:14.308 [ERROR] ERROR hello to name

如您所见,Azure 以某种方式误解了我们的日志严重性,并使所有内容都显示在信息级别。

每行的第一部分(如 2022-02-24T07:58:14.325 [Information])由 Azure 添加,而该行的其余部分是 Quarkus 记录到控制台的内容。

我明白为什么前两个日志条目没有显示,因为我们将最低级别设置为 INFO。

根据我从 the documentation 了解到的情况,Azure 会自动识别日志。然而,这似乎不是我们的情况。

我们忘记了什么吗?

The first part of every line (like 2022-02-24T07:58:14.325 [Information]) is added by Azure

默认情况下可以在日志流中添加[Information]

Built-in 日志流:

日志流用于查看应用程序日志文件流。这相当于您在本地开发期间调试函数时看到的输出。所有 log-based 信息 显示在日志流 window.

流日志:

在 real-time 中流式传输日志之前,启用要列出的日志类型。写入以 .txt、.log 或 .htm 结尾的文件的任何 信息,这些文件存储在 _/LogFiles_ 目录中(d:/home/logfiles) 由应用服务流式传输。 日志文件中写入的任何内容都可以显示在日志流中。

本地 在门户日志流中 在上面的屏幕截图中,您可以检查可以添加到日志流的本地日志中写入的内容。默认情况下,running time and [Information] 在日志流中始终可用(日志文件中的每个新行在日志流中添加 2022-02-24T14:40:46.015 [Information] logline

参考here了解更多信息