azure - 在 Spring Boot 应用程序中使用 applicationinsights 进行日志记录
问题描述
我们正在使用 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 定义的模式。
如果我们登录到 AI,是否使用控制台附加程序并登录到控制台。
解决方案
- 您可以创建一个将扩展OncePerRequestFilter 的类,并在该类中使用UUID 生成器生成一个Id 并将此UUID 设置在变量中,比如说RequestId。然后写MDC.put('requestid', RequestId)。
OncePerRequestFilter 类随每个 HTTP 请求执行,您不需要显式调用扩展它的类,并且 MDC.put('requestid', RequestId) 将作为外部属性添加到应用程序洞察日志中。
这只是相关性 ID 的一种解决方法,尽管它为我们提供了相同的功能,我们可以聚合日志。无论生成什么 requestid,您都可以检索它,然后使用它应用程序洞察力来查看该请求的日志。
- 我相信控制台附加程序仍然有用,因为 I.AI 我们可以在至少 4 到 5 分钟后看到 loga,因此对于实时调试控制台日志很有帮助。虽然你可以。配置您希望在控制台中查看的日志类型以及您希望发送到 ai 的日志。
推荐阅读
- java - 有没有比在 Java 中使用 imageIcon 数组更性能友好的方式来遍历动画的图像?
- c++ - 如何将 Visual Studio 与 CMake 一起使用并保留文件结构
- python - 如何在 m 长列表和 int y 的一行中获取两个输入
- php - 成对函数不同的计算
- r - R根据参考列的最小值或最大值创建包含另一列值的列
- r - 当grid.arrange()时如何对齐我的ggplots?
- powershell - 如何在 windows10 上安装 PlaidMl
- mysql - 仅在第一次匹配时加入 SQL
- android-studio - 要求我创建一个已经存在的“activity_main.xml”文件时出错
- c - 如何修复在 else if 语句中在 C 中检测到的堆栈粉碎?