azure - 在 Spring Boot 应用程序中使用 applicationinsights 进行日志记录

标签 azure spring-boot azure-application-insights

我们使用 Spring Boot 将指标发送到我们使用 applicationinsights-logging-log4j2 的应用洞察。

下面是我们在 logj2-spring.xml 中使用的附加程序

*

<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{MM-dd-yyyy'T'HH:mm:ss.SSS,UTC} %correlationId [%thread] %-5level %logger{36}- %msg%n"/>
    </Console>
    <ApplicationInsightsAppender name="aiAppender">
    </ApplicationInsightsAppender>
  </Appenders>
  <Loggers>
    <Root level="INFO">
      <AppenderRef ref="Console"  />
      <AppenderRef ref="aiAppender"  />
    </Root>
  </Loggers>

我们在应用洞察搜索屏幕中看到日志,但我有几个问题。

  1. 有没有一种方法可以在日志记录中定义自定义信息,例如correlationId(用于唯一跟踪流的guid)并将其发送到AI,就像我们在控制台日志中附加一样。

  2. 我们可以为人工智能定义类似模式的东西吗?

  3. 如果我们要登录到 AI,是否需要使用控制台附加程序并登录到控制台。

最佳答案

  1. 您可以创建一个类来扩展 OncePerRequestFilter,并在该类中使用 UUID 生成器生成一个 Id,并在变量中设置此 UUID,假设为 RequestId。 然后写入 MDC.put('requestid', RequestId)。
    一旦对每个 HTTP 请求执行 PerRequestFilter 类,您就不需要显式调用扩展它的类,并且 MDC.put('requestid', RequestId) 将作为外部属性添加到您的应用程序洞察日志中。

这只是correlationid的一种解决方法,尽管它为我们提供了相同的功能,即我们可以聚合日志。无论生成什么 requestid,您都可以检索它,然后使用它的应用程序洞察来查看该请求的日志。

  • 我相信控制台附加程序仍然有帮助,因为 I.AI 我们可以在至少 4 到 5 分钟后看到日志,因此对于实时调试控制台日志很有帮助。虽然你可以。配置您想要在控制台中查看的日志类型以及想要发送到 ai 的日志内容。
  • Function that will set the value of request Id in MDC, then this can be called from the entry point of all type of request.

    关于azure - 在 Spring Boot 应用程序中使用 applicationinsights 进行日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63097048/

    相关文章:

    azure - 如何在 Azure 通信服务中查看或下载通话记录?

    java - 组件扫描时如何避免Spring中不需要的bean?

    java - Spring Rest 返回 multipart/form-data 和 application/json 内容类型

    c# - 想要发送有关我的应用中的事件的电子邮件

    azure - 无法从应用程序见解导出完整日志信息

    c# - 从azure中的webjobs读取webapp的web.config

    java - Spring Tool Suite 未完成源代码和 javadoc 下载

    azure - 为 Application Insights 设置诊断设置

    python-3.x - 将 python 项目中的 Azure Application Insights 日志记录从 OpenCensus 迁移到 OpenTelemetary

    azure - 将 Azure 虚拟机添加到现有可用性集