如何解决Quarkus:MDC 未在 Azure Application Insights 中公开
如何获取 MDC 信息以显示在 Azure Insights 中。 目前我只在跟踪日志中看到它。
我正在使用:
- Quarkus 1.13.0.Final
- 应用洞察 3.0
我已根据这些说明插入了 Application Insights => Java codeless application monitoring Azure Monitor Application Insights
源代码
...
import org.slf4j.MDC;
@Provider
@ApplicationScoped
public class DemoRequestFilter implements ContainerRequestFilter {
private static final String DEMO_TAG = "demoTag";
@Override
public void filter(final ContainerRequestContext context) {
MDC.put(DEMO_TAG,"myDemoTag");
}
}
application.yaml
log:
console:
format: "%d{HH:mm:ss} %-5p [%c{2.}] (%t) requestDemoTag=[%X{demoTag}] %s%e%n"
感谢您的帮助
解决方法
你的意思是只能在这个地方看到MDC信息吗?你的目标是什么?
================================更新================ ==============
我将在项目中分享我的配置。如果我们需要将 appinsights java 代理添加到我们的程序中,我们可以遵循 this tutorial。
首先下载教程中提到的jar文件可以保存在你的workspace中,我存放在路径:D:/applicationinsights-agent-3.0.2.jar
然后我在与 jar 文件相同的文件夹中创建了一个文件“applicationinsights.json”。在json文件中,我设置了azure应用洞察实例的连接字符串。 Creating a new application insights 然后我可以在概览页面中获取连接字符串。
接下来,我需要设置 jvm 参数。我使用sts作为ide,所以菜单栏->窗口->首选项->Java->安装的JREs->双击你使用的那个->默认vm参数设置vaule-Xmx512m -XX:+UseG1GC -javaagent:D:/applicationinsights-agent-3.0.2.jar
添加MDC代码并启动程序,然后我可以在我的答案顶部得到结果。
如果您需要将您的程序部署到 azure 应用服务中,official doc 说代理 appinsights 不支持应用服务,但我发现 another answer 证明可以使用此功能。那就是
为应用服务启用应用洞察并指定应用 洞察实例并添加此应用程序设置; XDT_MicrosoftApplicationInsights_Java -> 1
让我们看看我身边的 log4j2 配置。
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="FATAL">
<Properties>
<Property name="pattern">%d{HH:mm:ss} %-5p [%c{2.}] (%t) requestDemoTag=[%X{demoTag}] %s%e%n</Property>
<Property name="logPath">logs</Property>
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${pattern}"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。