デプロイしたら動かなかったのでデバッグしようぜ WebAppsでデバッグ用ログ出力 #Azureリレー
2020-08-19
azblob://2022/11/11/eyecatch/2020-08-19-webapps-debug-logging-000.jpg

この記事は、毎週水曜にFIXER社員がAzureに関するブログを繋いでいくAzureリレー第24回の記事です。先週はAzureインフラの滅茶苦茶強い人こと松枝 宏樹さんの診断ログは怖くない!欲しいログを探すコツでした。
要チェックです!

WebApps環境でのデバッグ

以前の記事では、Azure WebAppsに.Net Coreで書いたアプリケーションをデプロイした。
で、そうすると次に気になるのがWebAppsの環境でどうやってデバッグするの?ってところ。
WebAppsにはポータル上で実行中のアプリから吐き出されるログをリアルタイムで見ることができる機能がある。

けれども、ここにデバッグ用のログを吐き出させるのにはひと手間必要だったので、今回はその方法のメモ。

WebAppsでアプリケーションログを有効化

WebAppsのリソースのメニューのうち、「App Service ログ」を選択する。


その中の、「アプリケーションログ(ファイルシステム)の項目をオンにする。


追加でレベルも指定できるのだけれど、これはそのレベル以上のログだけを吐き出す設定なので、欲しいログのレベルで設定する。

アプリケーション側にMicrosoft.Extensions.Logging.AzureAppServicesライブラリを追加

前回を参考にしてWebアプリケーションを作成したら、ソリューションエクスプローラーのプロジェクトファイル、またはslnファイルを右クリックして、「Nugetパッケージの管理」を選択。

するとNugetパッケージマネージャーが開くので、Microsoft.Extensions.Logging.AzureAppServicesライブラリを探してインストール。

インストール出来たら、Program.cs内で図のような6行を追加する。

これで準備ができたので、あとはコード内でログを出力するコードを書いていく。

例えば、今回は.NetCoreのWebApiのテンプレートの/weatherforecastのパスのgetメソッドで受け付けるAPIの一番初めに"testMessage"の文言を出力するコードを追加した。

完成したら前回同様にアプリを発行する。

動作を確認

発行後、発行したAPIを叩くとWebAppsのリソースのメニュー内「ログストリーム」から出力されたログの確認ができる。


例外が発生したらスタックとレースも出力してくれるので、コードのどこでコケたかもわかって便利!
このようにWebApps上では手軽にデプロイやデバッグが行えるので、Webアプリケーションを開発する際には開発の初期段階から気軽にデプロイして動作確認をとるようにしたい。