TGViewer
StepOne | Степан Минин StepOne | Степан Минин @steponeit · 3.27K subscribers
Post #410 2.46K
Логгирование в пет проекте

Да-да-да, очередной пост про hydrascript

Но разве я виноват в том, что проект развивается и там есть интересные мне задачи?

Так уж вышло, что поскольку вывод в консоль хотелось абстрагировать, как часть возможностей виртуальной машины, то он осуществлялся с помощью экземпляра TextWriter

Реализация была довольно спорной - зарегал в DI Console.Out

Не использовал ILogger<T>, поскольку хост писал status messages, да и формат сообщений был не такой, как надо

В итоге, спустя время я всё-таки узнал, как сделать логгирование в консоль стандартными средствами дотнета идентичным вызовам Console.WriteLine

Шаг первый. Внедрить интерфейс логгера там, где требуется вывод

Шаг второй. Написать свой форматтер сообщений, унаследованный от ConsoleFormatter

Шаг третий. Зарегать всё в DI примерно таким образом:
services.AddLogging(c => c.ClearProviders()
.AddConsole(options => options.FormatterName = nameof(SimplestConsoleFormatter))
.AddConsoleFormatter<SimplestConsoleFormatter, ConsoleFormatterOptions>());
services.Configure<InvocationLifetimeOptions>(options => options.SuppressStatusMessages = true);


Получился по итогу вот такой PR:
https://github.com/Stepami/hydrascript/pull/108/files
GitHub #97 - внедрение логгера by Stepami · Pull Request #108 · Stepami/hydrascript Description Внедрил нормальный логгинг и централизовал механизм вывода информации в консоль Теперь: В релизе обычный ConsoleWriteLine В тестах логи В дебаге стектрейс Related Issues Closes #97
  • 👍 5
  • ❤ 2
  • 🔥 2
More from @steponeit
  1. Sep 27, 2026Post #860
  2. Sep 25, 2026Рассказал как я добавил в HydraScript объекты и методы без классов и сделал протоколы. Стр…
  3. Sep 22, 2026Post #858
  4. Sep 21, 2026Post #857
  5. Sep 15, 2026Напомню, что у меня есть WireMock.Grpc.Protobuf — расширение для тех, кто пишет компонентн…
  6. Sep 12, 2026StepOne — официальный контрибутор FusionCache 🤙 Между набросами можно ещё и код писать Fu…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →