ここ 3 ヵ月ほど Mashup Award 11 向けのサービスを作っていました。そこで相も変わらず超お手軽な Azure Web Apps を使っていたのですが、本番のデモ中にサービスがダウンするという事件が発生しました。独自に記録していたアクセスログが途切れていたので「もしかして落ちた?」と辛うじて気付いたのですが、例外処理をしていなかった箇所で発生したらしく、原因が全くわかりませんでした。
今回は、そんな捕捉していない例外の内容を確認する方法です。
ログは自動保存
オンプレミス / 仮想マシン問わず、自前で構築した Windows サーバー上の IIS にホスティングしている場合、Web アプリケーションが捕捉されない例外を飛ばしてダウンしてもイベントログに記録されます。もし不慮の事故が発生したと思ったらイベントログを確認してみると良いです。
では IIS をより便利な形にラップしてサービス化した Azure Web Apps はどうでしょうか?実はこれも内部的に自動でエラーログが記録されています。何の設定もいらないので、ログを確認する方法さえ覚えておけば何とかなります。今回はコレに助けられました。
ログを確認する
ログは Azure Web Apps の裏で暗躍している管理機能 Kudu からアクセスするのが簡単です。 Web Apps の URL が https://hoge.azurewebsites.net の場合、Kudu へのアクセスは以下のようにします。
うまくアクセスできると、以下のような画面が出てくるハズです。
ここで [Debug Console] から [CMD] もしくは [PowerShell] と進みます。ここで Azure Web Apps 内のファイルシステム内を閲覧できるようになっているので、以下のファイルを確認します。
D:\home\LogFiles\eventlog.xml
この中にスタックトレース付きで例外の内容が記録されているので、じっくり確認して改善に繋げましょう!