Azure基本

Azure FunctionsでJavaアプリケーション(Spring Boot上)のLogbackでのログを確認してみた

これまで、Azure Functionsの関数の「モニター」で何度かログを確認したことがあったが、この方法だと、Spring Bootプロジェクトでデフォルトで利用できるLogbackにより出力したログの内容は確認することができない。

ただ、Application Insightsというモニタリングサービスを利用すると、Logbackにより出力したログの内容を確認することができる。なお、Application Insightsについては、以下のサイトを参照のこと。
https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/app-insights-overview

今回は、Application Insightsを利用して、Logbackにより出力したログの内容を確認してみたので、その手順を共有する。

前提条件

下記記事のサンプルプログラムを作成済であること。

Azure Functions上でTimerTriggerによって動作するJavaアプリケーション(Spring Boot上)を作成してみたこれまでは、HTTPリクエストによりAzure Functionsが動作するアプリケーションのみ作成してきたが、Timer Trigge...

また、以下のように、Azure Functionsの概要を表示した状態で「Application Insights」メニューを押下すると、Application Insightsが有効になっていること。
前提条件_Applnsights



作成したサンプルプログラムの修正

前提条件の記事のサンプルプログラムに、Logbackによるログ出力処理を追加する。なお、下記の赤枠は、前提条件のプログラムから変更したプログラムである。
サンプルプログラムの構成

修正したサービスクラスの内容は以下の通りで、Logbackによるログ出力処理を追加している。

その他のソースコード内容は、以下のサイトを参照のこと。ただし、Handlerクラスは、TimerTriggerイベントが1分毎に起動するようにしている。
https://github.com/purin-it/azure/tree/master/azure-functions-timer-trigger-manual/demoAzureFunc

また、その後のビルドとデプロイ手順については、前提条件の記事を参照のこと。



サンプルプログラムの実行結果(ローカル)

「mvn azure-functions:run」で実行した結果は以下の通りで、赤枠のログを確認すると、TimerTriggerServiceクラスのログが2種類ずつ表示されていることが確認できる。
ローカル環境の実行結果

サンプルプログラムの実行結果(Azure上)

サンプルプログラムを変更後、Azure Functionsの関数の「モニター」でログを確認した結果は、以下の通り。

1) Azure Functionsの概要を表示した状態で「関数」メニューを押下する。
Azure環境の実行結果_1

2) デプロイした関数名のリンクを押下する。
Azure環境の実行結果_2

3)「モニター」メニューを押下する。
Azure環境の実行結果_3

4) ログの一覧が表示されるため、最新のログのリンクを押下する。
Azure環境の実行結果_4

5) TimerTriggerServiceクラスのログ出力は、以下の赤枠の内容で、Logbackで出力したログが表示されていないことが確認できる。
Azure環境の実行結果_5



また、Application Insightsでログを確認した結果は、以下の通り。

6) Azure Functionsの概要を表示した状態で「Application Insights」メニューを押下する。
Azure環境の実行結果_6

7) 「ApplicationInsights データの表示」リンクを押下する。
Azure環境の実行結果_7

8) 「トランザクションの検索」メニューを押下する。
Azure環境の実行結果_8

9) 「過去24時間のすべてのデータを表示する」ボタンを押下する。
Azure環境の実行結果_9

10) 以下のように、トレースログが表示されることが確認できる。
Azure環境の実行結果_10

11) Azure Functionsの関数の「モニター」でログを確認した時間帯のトレースログを確認すると、以下のように、Logbackで出力したログ(赤枠)も表示されていることが確認できる。
Azure環境の実行結果_11

なお、上記赤枠、青枠のログ出力内容は、それぞれ以下の通り。

<赤枠のログ>
TimerTriggerService timerTriggerTest triggered:{“Schedule”:{“AdjustForDST”:true}, “ScheduleStatus”:{“Last”:”2021-05-04T16:42:00.0060334+09:00″, “Next”:”2021-05-04T16:43:00+09:00″, “LastUpdated”:”2021-05-04T16:42:00.0060334+09:00″}, “IsPastDue”:false}

<青枠のログ>
2021-05-04 16:43:00.091 INFO 42 — [pool-2-thread-2] com.example.service.TimerTriggerService:TimerTriggerService timerTriggerTest triggered: {“Schedule”:{“AdjustForDST”:true}, “ScheduleStatus”:{“Last”:”2021-05-04T16:42:00.0060334+09:00″, “Next”:”2021-05-04T16:43:00+09:00″, “LastUpdated”:”2021-05-04T16:42:00.0060334+09:00″}, “IsPastDue”:false}

要点まとめ

  • Application Insightsというモニタリングサービスを利用すると、Spring Bootプロジェクトでデフォルトで利用できるLogbackにより出力したログの内容を確認することができる。