我使用Log4j进行Spring Boot 1.5.8
设置以进行日志记录。我使用Azure Web服务和Azure的Application Insights进行日志记录。
问题
Logj4j
设置Azure以在Spring Boot(即基于注释的配置)中拦截HTTP请求? 答案 0 :(得分:2)
首先,没有太多内容可展示如何使用Spring Boot
和Application Insights设置Log4j
。我认为Logback
上有一两个教程。
其次,在Azure的ApplicationInsights库的一个或多个版本中似乎存在一些问题|错误(请参阅最后的链接)。
要在Spring Boot中启用Request-level
日志记录到Azure的ApplicationInsights
,我们需要注册ApplicationInsights,如下所示
package com.sample;
import javax.servlet.Filter;
import org.springframework.beans.factory.annotation.Value;
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 com.microsoft.applicationinsights.TelemetryConfiguration;
import com.microsoft.applicationinsights.web.internal.WebRequestTrackingFilter;
@Configuration
@ComponentScan("com.microsoft.applicationinsights.web.spring")
public class AppInsightsConfig {
private String insightsKey = "appInsightsKeyXX";
@Bean
public String telemetryConfig() {
if (insightsKey != null) {
TelemetryConfiguration.getActive().setInstrumentationKey(insightsKey);
}
return insightsKey;
}
@Bean
public 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();
}
}
以上是以下基于XML的配置的annotation-config
等效项
<filter>
<filter-name>ApplicationInsightsWebFilter</filter-name>
<filter-class>
com.microsoft.applicationinsights.web.internal.WebRequestTrackingFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>ApplicationInsightsWebFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上将配置记录所有http
请求到应用程序洞察 - 基本请求拦截器|过滤器。
我必须坚持使用以下版本的ApplicationInsights
罐子
// application insights dependencies
compile group: 'com.microsoft.azure', name: 'applicationinsights-core', version: '1.0.9'
compile group: 'com.microsoft.azure', name: 'applicationinsights-web', version: '1.0.9'
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j1_2', version: '1.0.9'
导航至此tutorial的评论部分,查看人们使用ApplicationInsights
与Log4j 1.2
和Log4j2
使用不同版本的1.0.9
时遇到的问题。对我来说只有DictReader
工作。
分享以防其他人遇到同样的问题。
答案 1 :(得分:1)
@Raf是的,以前版本的Application Insights Java SDK中存在Log4j和LogBack的错误。然而,随着Maven的最新SDK 2.0.0-BETA,我们解决了这个问题。请参阅此处的发行说明。还要非常感谢你放下这个例子。我会尝试将其包含在microsoft docs存储库中。
https://github.com/Microsoft/ApplicationInsights-Java/releases/tag/v2.0.0-BETA