无法使用logback appenders将日志推送到应用程序洞察

时间:2017-10-24 20:35:52

标签: java azure logback azure-application-insights

我有一个java web应用程序(springboot应用程序),我希望将日志推送到azure中的应用程序洞察。我使用logback作为我的日志框架,因为Springboot本身支持它。 我按照以下博客来集成我的网络应用程序的applicationInsights。

https://github.com/AzureCAT-GSI/DevCamp/tree/master/HOL/java/06-appinsights

根据这篇博客,我创建了以下内容:

  1. 在azure中创建了应用程序洞察资源
  2. 在我的java网络应用中创建了过滤器以捕获http请求
  3. 创建了ApplicationInsights.xml
  4. 创建了logback.xml,它将具有Azure提供的AI appender。
  5. 这是我的网络应用程序的片段

    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)

3 个答案:

答案 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现已推出。请升级到此版本。问题现已解决。