【发布时间】:2021-01-11 16:25:02
【问题描述】:
我有一个使用 .NET Core 5 创建的非常简单的 Web api,它设置为托管在 linux Docker 容器中。我想要做的就是让我的控制台输出进入 Docker 日志,就像在过去的 .NET Core 版本中一样。
这是我在 Program.cs 中的 Main 方法
var LOG_EVENT_LEVEL = Environment.GetEnvironmentVariable("LOG_EVENT_LEVEL");
var logEventLevel = LOG_EVENT_LEVEL != null
? Enum.Parse<LogEventLevel>(LOG_EVENT_LEVEL)
: LogEventLevel.Information;
Log.Logger = new LoggerConfiguration()
.WriteTo.Console(logEventLevel)
.CreateLogger();
Log.Information("START");
我认为输出“START”应该显示在我的 Docker 日志中,但事实并非如此。我按预期在 VS 的调试窗口中看到它们。 .NET Core 5 有什么变化吗?
【问题讨论】:
-
非常感谢您提出这个问题。我已经尝试了 2 天来解决这个问题。我的容器化 .NET Core 应用程序也停止向 Docker 发送日志,这会杀死我的整个日志系统(我的设置将 Docker 日志转发到 Seq)。就像你一样,我仍然可以在调试窗口中看到日志,但看不到 Docker。与您不同,我仍在使用 .NET Core 3.1,因此我认为这与 .NET Core 5 升级无关。在我的日志停止工作之前,我唯一改变的是从 3.0.0 到 3.0.4 的自动 Docker Desktop 更新。我猜测更新是罪魁祸首,但我不知道为什么。