Azure WebApp とログ
ASP.NET Core のログを Azure WebApp に出力するメモ。
ASP.NET Core の公式マニュアルに手順が書かれているけど、思った通りに行かないので検証してみた。
検証
環境
- Azure WebApp (Windows)
- ASP.NET Core 2.1 の MVC アプリケーション
- デプロイは Azure WebApp の GitHub からのデプロイ
結果
ファイルシステムのアプリケーションログを有効にして、詳細レベルでログを出力するように。
ウェブアプリをリロードしても、ログは出力されませんでした。
公式マニュアル通り、Microsoft.Extensions.Logging.AzureAppServices
パッケージを追加して、以下のコードを追加します。
return WebHost.CreateDefaultBuilder(args)
.ConfigureLogging(logging => logging.AddAzureWebAppDiagnostics())
.UseStartup<Startup>();
今度はリロードするとログが出力されるようになりました!
公式マニュアル通りの結果になりました。
結果 (Linux)
実は私は Web App (Linux) を使ってたんですね。なかなか公式マニュアル通りにならない。試しに Web App (Windows) を使ったら公式マニュアル通りになりました。
どこが違うかというと... logging.AddAzureWebAppDiagnostics()
を書かなくてもログが出力されるんですね。
Web App (Linux) は Docker スタックになってなくても Docker コンテナで動作しています。(確か) Web App (Linux) の App Service ログは Docker コンテナの STDOUT / STDERR が出力されるようになってるので追加のコードは不要なんですね。
-
Microsoft.Extensions.Logging.AzureAppServices
パッケージは不要 - Azure の設定でログレベルの変更をすることができない
ってことなんですね。
ログの設定画面も Web App (Windows) と違います。
結論
logging.AddAzureWebAppDiagnostics()
は Web App (Linux) では意味はないけど、書いてて困ることはあまりないと思うのでとりあえず書いておきましょう。
なんだかんだ言って、Web App (Windows) のほうが使いやすいですね。