Да-да-да, очередной пост про
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