如何更改 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了解更多信息
我们正在开发部署到 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了解更多信息