我正在尝试使用AWS LOG DRIVER将日志发送到CloudWatch。
步骤-
Console.WriteLine("This is a sample application");
现在在CloudWatch Logs中,我已经开始看到应用程序日志
问题:我有一个ASP.NET MVC 5 Web应用程序,我在MVC应用程序中添加了相同的Console.WriteLine("This is a sample application");
,但是在Cloud Watch Log Group /中没有看到日志流。
问题:这是否意味着AWSLog Driver仅从控制台应用程序发送日志。但是我认为这将是一个很大的限制。有人可以指导我吗?甚至ASP.Net应用程序也可以使用Console.Out发送日志吗?
答案 0 :(得分:0)
第一件事,
记录的信息和日志的格式取决于 几乎完全在容器的终结点命令上。
因此,如果应用程序是容器的父进程,则它将记录到容器日志中,或者如果该进程使用某个进程管理器运行,则它将在配置后将日志重定向到容器日志。
所以从docker的角度来看
docker日志在显示三个I / O流时显示 运行,分别称为STDIN,STDOUT和STDERR。 STDOUT通常是命令的常规输出,而STDERR通常用于输出错误消息。默认情况下,docker 日志显示命令的docker的STDOUT和STDERR
现在是AWS视角,
任务容器记录的信息类型 主要取决于他们的ENTRYPOINT命令。默认情况下, 被捕获,显示您通常会在 交互式终端(如果您在本地运行容器) STDOUT和STDERR I / O流。 awslogs日志驱动程序只需传递 这些日志从Docker到CloudWatch。
基于上述,您的Docker容器和AWS日志驱动程序与日志无关,它仅从应用程序Stdout和Stderr获取日志,并且还取决于Docker和AWS日志驱动程序使用者容器日志的入口点。
您需要研究c#stdout和stderr。
stdout-vs-console-write-in-c-sharp
// Redirect standard output from the console to the output file.
Console.SetOut(writer);
output-from-net-core-console-app-by-docker-logs
asp-net-core-net-core-console-app-logging-in-docker-container