これまで、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の概要を表示した状態で「Application Insights」メニューを押下すると、Application Insightsが有効になっていること。
作成したサンプルプログラムの修正
前提条件の記事のサンプルプログラムに、Logbackによるログ出力処理を追加する。なお、下記の赤枠は、前提条件のプログラムから変更したプログラムである。
修正したサービスクラスの内容は以下の通りで、Logbackによるログ出力処理を追加している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package com.example.service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import com.example.model.TimerTriggerParam; import com.example.model.TimerTriggerResult; @Service public class TimerTriggerService { /* Spring Bootでログ出力するためのLogbackのクラスを生成 */ private static final Logger LOGGER = LoggerFactory.getLogger(TimerTriggerService.class); /** * タイマートリガーのテストを行うサービス. * @param param TimerTrigger呼出用Param * @return タイマートリガーのテストを行うサービスクラスの呼出結果 */ public TimerTriggerResult timerTriggerTest(TimerTriggerParam param) { // タイマートリガーのテストを行うサービスが呼び出されたことをログ出力する param.getLogger().info("TimerTriggerService timerTriggerTest triggered: " + param.getTimerInfo()); LOGGER.info("TimerTriggerService timerTriggerTest triggered: " + param.getTimerInfo()); // タイマートリガーのテストを行うサービスクラスの呼出結果を返却する TimerTriggerResult result = new TimerTriggerResult(); result.setResult("success"); return result; } } |
その他のソースコード内容は、以下のサイトを参照のこと。ただし、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の概要を表示した状態で「関数」メニューを押下する。
4) ログの一覧が表示されるため、最新のログのリンクを押下する。
5) TimerTriggerServiceクラスのログ出力は、以下の赤枠の内容で、Logbackで出力したログが表示されていないことが確認できる。
また、Application Insightsでログを確認した結果は、以下の通り。
6) Azure Functionsの概要を表示した状態で「Application Insights」メニューを押下する。
7) 「ApplicationInsights データの表示」リンクを押下する。
9) 「過去24時間のすべてのデータを表示する」ボタンを押下する。
10) 以下のように、トレースログが表示されることが確認できる。
11) Azure Functionsの関数の「モニター」でログを確認した時間帯のトレースログを確認すると、以下のように、Logbackで出力したログ(赤枠)も表示されていることが確認できる。
なお、上記赤枠、青枠のログ出力内容は、それぞれ以下の通り。
<赤枠のログ>
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により出力したログの内容を確認することができる。