使用 Spring Cloud Functions 实现 Azure Function App。在应用设置“APPINSIGHTS_INSTRUMENTATIONKEY”中配置的 App Insights 检测密钥:。我使用 lombok 注释 @Slf4j 来记录消息,但我在 App 洞察力中看不到它们。应用洞察仅捕获使用 ExecutionContext 日志写入的日志。任何人都可以给我一个参考,以使用 slf4j 在 App Insights 中记录消息。
2 回答
如果您使用的是 AppInsights 2.x,则可以使用applicationinsights-logging-logback或applicationinsights-logging-log4j2库来启用日志记录。请阅读文档以了解有关启用日志的更多信息。
<!-- Logback -->
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-logback</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
<!-- Log4J 2.0 -->
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-log4j2</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
如果您使用的是 AppInsights 3.x,您可以配置将自动将日志导出到 App Insights 的代理。
Azure Functions 中还有一个预览功能,可以启用可以从 Azure 门户启用的分布式跟踪。
2022年更新
Application Insights 代理支持开箱即用的 SLF4j 日志(用于 log4j2、logback 和 jul)。引用自https://docs.microsoft.com/en-us/azure/azure-monitor/app/java-standalone-config#auto-collected-logging
Log4j、Logback 和 java.util.logging 是自动检测的,并且通过这些日志记录框架执行的日志记录是自动收集的。仅当日志首先满足为日志记录框架配置的级别,其次,也满足为 Application Insights 配置的级别时,才会捕获日志记录。
现在很简单:
- 需要为您的 Azure 功能启用 Application Insights
- 在 azure 函数配置中添加以下内容。更多细节在这里:
ApplicationInsightsAgent_EXTENSION_VERSION=~3
- 就像任何其他项目一样添加 logback 依赖项
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.10</version>
</dependency>
和一个示例 logback.xml
- 最后在您的 azure 函数中,使用 SLF4j API 记录:
LoggerFactory.getLogger(getClass()).info("====================SLF4j Logger=======================");
完成上述操作后,您应该可以在 App Insights 中查看日志
traces
| order by timestamp desc
| limit 3000
severity列表示日志级别。(3 = 错误。1 = 信息)
