Serilog .NET CORE 5 Web API — Показать в журналах Docker

У меня есть очень простой веб-API, созданный с помощью .NET Core 5, который настроен для размещения в контейнере Linux Docker. Все, что я хочу сделать, это чтобы вывод моей консоли попадал в журналы Docker, как это было в прошлых версиях .NET Core.

Вот мой основной метод в Program.cs

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?


person Mike Kushner    schedule 11.01.2021    source источник
comment
Большое спасибо, что задали этот вопрос. Я пытаюсь понять это уже 2 дня. Мое контейнерное приложение .NET Core также перестало отправлять журналы в Docker, что убивает всю мою систему ведения журналов (моя установка перенаправляет журналы Docker в Seq). Как и вы, я все еще могу видеть логи в окне отладки, но не в Docker. В отличие от вас, я все еще использую .NET Core 3.1, поэтому не думаю, что это связано с обновлением .NET Core 5. Единственное, что я изменил до того, как мои журналы перестали работать, — это автоматическое обновление Docker Desktop с 3.0.0 до 3.0.4. Я предполагаю, что виновато обновление, но я не знаю, почему.   -  person E. Lofback    schedule 12.01.2021


Ответы (1)


Таким образом, Visual Studio перехватывает стандартный вывод контейнера во время отладки. Если вы вручную запустите контейнер на своем компьютере, вы увидите обычный вывод в журналах.

person Mike Kushner    schedule 12.01.2021