Spring Boot 项目上传日志到 Azure Application Insights

Azure 提供了一个 Application Insights 工具。

这个工具可以对 Spring Boot 项目中的 API 请求,日志进行分析。

你需要做的就是在你的 Spring Boot 项目中配置好依赖和参数后,Spring Boot 项目启动后就会自动将日志上传到 Azure 供分析。

配置 Azure

不管怎么用,Azure 都首先需要进行配置。

我们现在针对配置的是日志删除到 Azure 上进行日志分析。

Log Analytics workspaces

我们首先需要配置一个 Log Analytics workspaces,搜索资源 Log Analytics workspaces。

在弹出的界面中将会显示已经配置好的日志分析工作空间。

如果你还没有的话,你需要创建一个。

单击界面上的 Add 按钮,进行新建。

在新建的对话框中你需要对你的费用订购部分进行配置。

如果你还没有配置的话,你可能需要到 Azure 的控制台中配置信用卡。

在第二部分输入的是名称和区域,名称可以根据需要命名,区域的话,选一个离你最近的就可以了。

在配置完上面的参数后,创建就可以了。

Application Insights

在最上面的搜索框中搜索 Application Insights

然后你会看到 Application Insights 的界面,单击左侧的添加按钮来添加一个应用。

这里也有几个配置,在最上面的是费用计算和订购。

中间的部分是有关资源的名称。

在最下面的就是有关日志的配置了,因为要在这里进行选择,这就是为什么我们需要首先配置日志工作空间的原因,否则是没有办法配置日志的。

在一切配置妥当后,单击最下面的预览并创建即可。

在创建成功后,你的项目会获得一个 Instrumentation Key,这个是需要配置到你 Spring Boot 项目中的。

现在你可以先拷贝下来。

Spring 项目

在Spring 项目中需要进行一些调整就可以了。

maven 依赖

你需要为你的项目添加 Maven 依赖。

       <dependency>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>applicationinsights-logging-logback</artifactId>
            <version>2.6.2</version>
        </dependency>

上面的依赖将会将日志上传需要的类添加进来。

application.properties

在 Spring Boot 配置文件中,添加下面的参数

# Azure Application Insights
azure.application-insights.instrumentation-key=[开始让你拷贝的 ID]
spring.application.name=[Azure 中定义的名称]

根据上面在 Azure 的配置,将上面的参数修改为你的 Azure 配置。

logback.xml

因为我们的项目使用的是 logback 为日志,因此我们需要在 logback.xml 中添加下面的内容。

    <appender name="aiAppender"
              class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender">
        <instrumentationKey>[开始让你拷贝的 ID]</instrumentationKey>
    </appender>

    <!-- APPENDER-REF -->
    <root level="debug">
        <appender-ref ref="aiAppender"/>
    </root>

上面的内容非常简单,就是将日志级别为 debug 的全部输出到 Azure 上面去。

在官方的代码中,这里使用了日志级别为 TRACE,我们不建议使用。因为这样会输出非常多的日志,让你的访问非常缓慢。

查看结果

当所有配置完成以后,开始在你的本地运行你的 Spring Boot 应用程序。

稍等一些时间后登录 Azure,然后选择 Transaction search。

在界面中你可能看不到任何数据,你需要单击界面中的显示所有 24 小时内的数据。

如果你能看到程序删除的日志,主要是查看时间,那么就说明一切都已经配置好了。