我们正在开发多个部署到 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
默认情况下可以将[信息]
添加到日志流中。
内置日志流:
日志流用于查看应用程序日志文件流。这相当于您在本地开发期间调试函数时看到的输出。所有基于日志的信息都显示在“日志流”窗口中。
流日志:
在实时流式传输日志之前,启用您想要列出的日志类型。写入存储在 _/LogFiles_
目录 ( d:/home/logfiles
) 由应用服务进行流式传输。
日志文件中写入的任何内容都可以显示在日志流中。
本地
在门户日志流中
在上面的屏幕截图中,您可以检查本地日志中写入的所有内容,这些内容可以添加到日志流中。默认情况下,运行时间和[信息]
始终在日志流中可用(日志文件中添加的每个新行2022-02-24T14:40:46.015 [信息] ] 日志行
在日志流中)
引用here了解更多信息
关于java - 如何更改 Azure Functions 中的日志级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71249025/