1

使用 Spring Cloud Functions 实现 Azure Function App。在应用设置“APPINSIGHTS_INSTRUMENTATIONKEY”中配置的 App Insights 检测密钥:。我使用 lombok 注释 @Slf4j 来记录消息,但我在 App 洞察力中看不到它们。应用洞察仅捕获使用 ExecutionContext 日志写入的日志。任何人都可以给我一个参考,以使用 slf4j 在 App Insights 中记录消息。

4

2 回答 2

1

如果您使用的是 AppInsights 2.x,则可以使用applicationinsights-logging-logbackapplicationinsights-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 门户启用的分布式跟踪。

于 2021-06-15T18:51:41.463 回答
0

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 配置的级别时,才会捕获日志记录。

现在很简单:

  1. 需要为您的 Azure 功能启用 Application Insights
  2. 在 azure 函数配置中添加以下内容。更多细节在这里
ApplicationInsightsAgent_EXTENSION_VERSION=~3
  1. 就像任何其他项目一样添加 logback 依赖项
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.10</version>
        </dependency>

和一个示例 logback.xml

  1. 最后在您的 azure 函数中,使用 SLF4j API 记录:
    LoggerFactory.getLogger(getClass()).info("====================SLF4j Logger=======================");

完成上述操作后,您应该可以在 App Insights 中查看日志

traces
| order by timestamp desc 
| limit 3000

severity列表示日志级别。(3 = 错误。1 = 信息)

在此处输入图像描述

于 2022-02-21T08:31:30.143 回答