当前位置: 首页 > 知识库问答 >
问题:

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

伯和蔼
2023-03-14

我有一个java web应用程序(springboot应用程序),我想在其中将日志推送到Azure中的应用程序insights。我使用logback作为我的日志框架,因为它是由SpringBoot本地支持的。我关注了下面的博客,以便为我的web应用程序集成applicationInsights。

https://github.com/azurecat-gsi/devcamp/tree/master/hol/java/06-AppInsights

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

  1. 在Azure中创建了application insights资源
  2. 在我的java web应用程序中创建了过滤器来捕获http请求
  3. 已创建ApplicationInsights.xml
  4. 创建了logback.xml,它将具有Azure提供的AI附加器。

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库(core和web)

共有1个答案

连曜灿
2023-03-14

azure库1.0.10版本中似乎存在一个bug。修复程序在下一个版本1.0.11中有。因此,为了解决这个问题,我将azure库降级到1.0.9,所有的工作都很顺利。libraries application insights Core/Web/Logback appender从1.0.10降级到1.0.9。

问题只发生在logback appender中。Log4j版本在1.0.10版本下运行正常。

 类似资料:
  • Azure应用程序洞察或日志分析的用例是什么? 我正在使用APIM和Azure函数,并希望对请求执行日志记录。应用洞察和日志分析哪一个最合适? https://docs.microsoft.com/en-gb/Azure/Azure-monitor/overview 更新 特别是关于APIM使用的Azure应用程序洞察与日志分析的任何信息?

  • 我想有一个共享的应用程序insights实例,将保存来自不同微服务运行的所有日志。 或者说,共享应用程序insights实例并将所有日志和遥测都放在一堆中是不是一个坏主意?

  • 我正在尝试将Azure App insights service集成到service fabric App中,用于日志记录和检测。我正在本地VM上运行fabric代码。我完全遵循了这里的文档[场景2]。docs.microsoft.com上的其他资源似乎也指明了相同的步骤。[例如:https://docs.microsoft.com/en-us/Azure/service-fabric/servi

  • 我有一个Azure函数连接到一个App Insights实例。函数app会发出日志消息,我可以在Azure portal的日志流中看到这些消息,并在app Insights跟踪时看到这些消息。 通过在中添加元素(https://github.com/Azure/azure-webjobs-sdk-script/wiki/host.json),我将控制台日志级别增加到了详细,因此详细级别的消息会出现

  • 我是docker和所有这些日志记录的新手,所以可能我犯了一个stuipd错误,所以提前感谢您的帮助。我让麋鹿通过Dockerfile行运行docker容器(6.2.2): 在一个单独的容器中,我通过folling Dockerfile行安装并运行Filebeat: 我的Filebeat配置是: 正如你所看到的,我试图在elasticsearch中创建一个自定义索引,但现在我只是想先让默认索引正常工

  • 有没有什么简单的方法可以找到哪些应用程序正在使用azure Portal的特定应用程序洞察? 我已经检查了门户中的各种选项,但没有找到任何易于理解的界面,我可以在其中找到正在向特定应用程序Insights发送数据的应用程序列表。