我确实有一个运行.net core 2应用程序的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或通过URL https://[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文件中?有什么我想念的吗?
答案 0 :(得分:8)
首先,您需要启用容器日志
[App Service]->监视-> App Service日志
然后您可以在[App Service]->监视->日志流中看到容器日志
UPD
然后是“当前Docker日志”
答案 1 :(得分:4)
我已经诅咒了好一阵子了,最终发现了一些对我有用的东西。
首先,我按照@dima_horror的回答启用了文件系统日志记录。
接下来,我运行了一个命令行az webapp log tail --name myApp --resource-group myRg
这现在似乎给了我有用的输出(在启用文件系统日志记录之前没有任何帮助)。
答案 2 :(得分:0)
您是否检查了容器设置中的日志?我遵循this指南将容器部署到Azure Web应用。
答案 3 :(得分:0)
我有完全相同的问题,App Service容器日志是通用且模糊的。这与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秒告诉我一次。
我了解这是生产环境,但是您必须给我们一些东西!
出于无奈,我决定在Azure容器实例资源中运行相同的映像,该映像向您显示Docker提供的相同详细日志(请参见下面的屏幕截图)
现在这就是我在说的!
使用Azure容器实例中的错误日志,我发现我的App Service无法访问Sql Server资源(即使它们位于同一资源组中)。我只是使Sql Server资源可以在同一资源组中访问
答案 4 :(得分:0)