我有一个java web应用程序(springboot应用程序),我希望将日志推送到azure中的应用程序洞察。我使用logback作为我的日志框架,因为Springboot本身支持它。 我按照以下博客来集成我的网络应用程序的applicationInsights。
https://github.com/AzureCAT-GSI/DevCamp/tree/master/HOL/java/06-appinsights
根据这篇博客,我创建了以下内容:
这是我的网络应用程序的片段
1)ApplicationInsight过滤器类如下: -
@Configuration
public class AppInsightsConfig {
@Bean
public String telemetryConfig() {
String telemetryKey = System.getenv("APPLICATION_INSIGHTS_IKEY");
if (telemetryKey != null) {
TelemetryConfiguration.getActive().setInstrumentationKey(telemetryKey);
}
return telemetryKey;
}
@Bean
@Order(1)
public org.springframework.boot.web.servlet.FilterRegistrationBean aiFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new WebRequestTrackingFilter());
registration.addUrlPatterns("/**");
registration.setOrder(1);
return registration;
}
@Bean(name = "WebRequestTrackingFilter")
public Filter WebRequestTrackingFilter() {
return new WebRequestTrackingFilter();
}
}
2)ApplicationInsights.xml(src / main / resources文件夹)
<?xml version="1.0" encoding="UTF-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
<!-- The key from the portal: -->
<InstrumentationKey>my app key</InstrumentationKey>
<!-- HTTP request component (not required for bare API) -->
<TelemetryModules>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebRequestTrackingTelemetryModule"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebSessionTrackingTelemetryModule"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebUserTrackingTelemetryModule"/>
</TelemetryModules>
<!-- Events correlation (not required for bare API) -->
<!-- These initializers add context data to each event -->
<TelemetryInitializers>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationIdTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationNameTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebSessionTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserAgentTelemetryInitializer"/>
</TelemetryInitializers>
</ApplicationInsights>
3)Logback.xml如下: -
<configuration>
<appender name="aiAppender"
class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender">
</appender>
<root level="trace">
<appender-ref ref="aiAppender" />
</root>
<logger name="org.springframework.web" level="INFO"/>
</configuration>
问题在于我无法将日志推送到应用洞察。但是,我可以在应用洞察中获取遥测数据。
注意:我使用的是最新版本的appinsights库(核心和Web)
答案 0 :(得分:3)
azure库版本1.0.10中似乎存在错误。修复程序在下一个版本1.0.11中存在。因此,为了解决这个问题,我将azure库降级为1.0.9,一切都像魅力一样。 库应用程序洞察核心/ web / logback appender从1.0.10下降到1.0.9。
问题仅在于logback appender。 Log4j版本在1.0.10版本上运行正常。
答案 1 :(得分:0)
我遇到了同样的问题 我建议你将库版本从1.0.10降级到1.0.9。 它已经解决了!谢谢。
答案 2 :(得分:0)
新版Application Insights Java SDK v2.0.0-BETA现已推出。请升级到此版本。问题现已解决。