【问题标题】:Serilog .NET CORE 5 Web API - Show In Docker LogsSerilog .NET CORE 5 Web API - 在 Docker 日志中显示
【发布时间】: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 更新。我猜测更新是罪魁祸首,但我不知道为什么。

标签: docker serilog .net-5


【解决方案1】:

因此,事实证明 Visual Studio 在调试时劫持了容器的标准输出。如果你在你的机器上手动启动容器,你会在日志中看到正常的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多