Tom*_*asz 3 azure spring-boot azure-application-insights
我关注了https://docs.microsoft.com/en-us/azure/application-insights/app-insights-java-get-started,但仍然没有成功.
ApplicationInsights.xml使用硬编码的仪器键添加到main/resources,甚至<SDKLogger />内部@ComponentScan({...., "com.microsoft.applicationinsights.web.spring"})结果:
RequestNameHandlerInterceptorAdapter是通过实例化的com.microsoft.applicationinsights.web.spring.internal.InterceptorRegistry,并且在调用期间调用该preHandle方法,但是对ThreadContext.getRequestTelemetryContext()返回的调用始终为null,并且不再发生任何事情它看起来很明显,但不知道是什么.哪些部分/类负责加载配置文件?
我对文档有点困惑.正如yonisha所说,过滤器完成了整个魔术.以下配置类负责在Spring Boot应用程序中创建和添加过滤器.
import com.microsoft.applicationinsights.web.internal.WebRequestTrackingFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import javax.servlet.Filter;
@Configuration
@ComponentScan("com.microsoft.applicationinsights.web.spring")
public class ApplicationInsightsConfiguration {
@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(appInsightsWebRequestTrackingFilter());
registration.addUrlPatterns("/*");
registration.setName("webRequestTrackingFilter");
registration.setOrder(1);
return registration;
}
@Bean(name = "appInsightsWebRequestTrackingFilter")
public Filter appInsightsWebRequestTrackingFilter() {
return new WebRequestTrackingFilter();
}
Run Code Online (Sandbox Code Playgroud)
重要提示:如果将server.context-path属性设置为某个值,它将很好地工作.如果没有,AI初始化将失败并出错
AI: ERROR 03-04-2017 14:11, 20: WebApp name is not found, unable to register WebApp
Run Code Online (Sandbox Code Playgroud)
为了保持servlet-context为空,我不得不为过滤器和其他两个类实现包装器来覆盖它,但它是一个非常脏的修复...如果名称可以作为参数传递给过滤器,但这还不可能(https://github.com/Microsoft/ApplicationInsights-Java/issues/359)
| 归档时间: |
|
| 查看次数: |
2584 次 |
| 最近记录: |