.net Core2アプリを実行しているDockerコンテナがあります。
ロギングは、Program.cs
のこのコードを使用して構成されます
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
})
.UseStartup<Startup>();
およびappsettings.json
ファイル
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
},
}
ロギングは問題ないようです。Kestrelを直接実行すると、ターミナルでログを確認できます。コンテナ化された場合も同じです。コマンドdocker logs
は私が欲しいものを示しています。
Azure Web Appでコンテナーとして実行すると、本番環境で問題が発生します。一貫性のあるDockerログが見つかりません。
FTPまたはURLhttps://[mysite].scm.azurewebsites.net/api/logs/docker
を介してログファイルにアクセスしようとしました。たとえば、https://[mysite].scm.azurewebsites.net/api/vfs/LogFiles/2018_09_09_RD0003FF74F63E_docker.log
のように、ログファイルはほとんど空で、コンテナの開始行のみが存在します
また、通常のポータルインターフェイスにも同じ行があります。
問題は、DockerログがAzure Web Appのdocker.logファイルに自動的に出力されるかどうかです。足りないものはありますか?
コンテナ設定でログを確認しましたか? this ガイドに従ってコンテナーをAzureWebアプリにデプロイしました。
同じ問題があります。AppServiceコンテナのログは一般的であいまいです。これは、コンテナーを実行するたびにDockerが表示するログと同じではありません。
17/02/2020 08:59:25.186 INFO - Site: tutorial-api - Start container succeeded. Container: f8bfa7e27680c0e9551c6157f9d1c8a73c9a3e739b4f15de8586ce52809798d3 17/02/2020 08:59:30.675 INFO - Site: tutorial-api - Application Logging (Filesystem): On 17/02/2020 08:59:44.106 INFO - Site: tutorial-api - Waiting for container to be ready 17/02/2020 08:59:49.116 INFO - Site: tutorial-api - Container has exited 17/02/2020 08:59:49.117 ERROR - Site: tutorial-api - Container could not be started 17/02/2020 08:59:49.120 INFO - Site: tutorial-api - Purging after container failed to start 17/02/2020 08:59:49.120 ERROR - Site: tutorial-api - Unable to start container. Error message: Container could not be started: tutorial-api_20
"コンテナを起動できません、コンテナを起動できませんでした"
うわー! Azureは、60秒ごとに1分が経過したと言ったところです。
これが本番環境であることは理解していますが、何かを教えてください。
欲求不満から、Azure Container Instanceリソースで同じイメージを実行することにしました。そこでは、Dockerが提供するのと同じ詳細なログが表示されます(下のスクリーンショットを参照)。
今それが私が話していることです!
Azure Container Instanceのエラーログを使用して、App ServiceがSQL Serverリソースにアクセスできないことがわかりました(同じリソースグループ内にある場合でも)。同じリソースグループ内でSQLServerリソースにアクセスできるようにしただけです