【发布时间】:2018-04-05 18:49:49
【问题描述】:
我有一个 java web 应用程序(springboot 应用程序),我想在其中将日志推送到 azure 中的应用程序洞察力。我使用 logback 作为我的日志框架,因为 Springboot 原生支持它。 我按照以下博客为我的网络应用集成了 applicationInsights。
https://github.com/AzureCAT-GSI/DevCamp/tree/master/HOL/java/06-appinsights
根据这个博客,我创建了以下内容:
- 在 azure 中创建了应用洞察资源
- 在我的 Java Web 应用程序中创建了过滤器来捕获 http 请求
- 已创建 ApplicationInsights.xml
- 创建了 logback.xml,其中包含 Azure 提供的 AI appender。
这是我的网络应用程序中的 sn-ps
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 库(核心和网络)
【问题讨论】:
标签: java azure logback azure-application-insights