我们使用 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>
我们在应用洞察搜索屏幕中看到日志,但我有几个问题。
有没有一种方法可以在日志记录中定义自定义信息,例如correlationId(用于唯一跟踪流的guid)并将其发送到AI,就像我们在控制台日志中附加一样。
我们可以为人工智能定义类似模式的东西吗?
如果我们要登录到 AI,是否需要使用控制台附加程序并登录到控制台。
最佳答案
- 您可以创建一个类来扩展 OncePerRequestFilter,并在该类中使用 UUID 生成器生成一个 Id,并在变量中设置此 UUID,假设为 RequestId。
然后写入 MDC.put('requestid', RequestId)。
一旦对每个 HTTP 请求执行 PerRequestFilter 类,您就不需要显式调用扩展它的类,并且 MDC.put('requestid', RequestId) 将作为外部属性添加到您的应用程序洞察日志中。
这只是correlationid的一种解决方法,尽管它为我们提供了相同的功能,即我们可以聚合日志。无论生成什么 requestid,您都可以检索它,然后使用它的应用程序洞察来查看该请求的日志。
- 我相信控制台附加程序仍然有帮助,因为 I.AI 我们可以在至少 4 到 5 分钟后看到日志,因此对于实时调试控制台日志很有帮助。虽然你可以。配置您想要在控制台中查看的日志类型以及想要发送到 ai 的日志内容。
关于azure - 在 Spring Boot 应用程序中使用 applicationinsights 进行日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63097048/