c# #docker
#c# #docker
Вопрос:
Все журналы консоли форматируются с помощью SimpleConsoleFormatter (до тех пор, пока этот параметр не будет переопределен) и вывода по умолчанию при запуске ASP.NET приложение на Kestrel выглядит следующим образом:
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7007
Но когда я использую Docker для размещения своего приложения, похоже, что вместо этого используется JsonConsoleFormatter. Это всего лишь мое предположение… Но в любом случае, результат теперь выглядит следующим образом:
docker-webapi-1 | {"EventId":14,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Now listening on: https://[::]:443","State":{"Message":"Now listening on: https://[::]:443","address":"https://[::]:443","{OriginalFormat}":"Now listening on: {address}"}}
Как я могу сделать так, чтобы выходные данные Docker выглядели одинаково, когда я просто использую Kestrel? Спасибо.
Чего я хочу добиться при использовании Docker:
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://[::]:443
Ответ №1:
Образы aspnet docker устанавливают переменную среды Logging__Console__FormatterName
на json
, потому что Microsoft считает, что большинство людей, которые запускают.Сетевой код в контейнерах Docker предпочитает этот формат.
Чтобы вернуть его к простому форматированию, вам необходимо установить переменную среды на Simple
, добавив
ENV Logging__Console__FormatterName=Simple
где-то в вашем Dockerfile.
На Github есть открытый вопрос об изменении: https://github.com/dotnet/dotnet-docker/issues/3274