Я новичок в ядре .NET и не имел возможности (пока) углубиться в внедрение зависимостей.Но я понимаю концепцию и знаю, что это хорошая вещь, а также что она мне нужна для моего приложения.Поскольку в какой-то момент может потребоваться улучшить или переключить функции ведения журнала.
Я запустил консольное приложение, которое использует библиотеку классов (.net Standard 2.0), и должно выполнить вывод данных на консоль, а такжефайл журнала.
В настоящее время я следовал некоторым руководствам и настроил ведение журнала с помощью Microsoft.Extensions.Logging.Console (пока ничего для файла).Вывод этого логгера заключается в том, что он записывает две строки для каждой записи, например:
info: SampleWebConsoleApp.Program[0]
This is a test of the emergency broadcast system.
Я не знаю о вас, но мне не нравится вывод для регистрации в двух строках.Мой мозг не может разобрать это :-).Мне нравится это в одной строке и с отметкой времени в начале.Насколько я выяснил, кажется, что консольный логгер нельзя изменить на одну строку и иметь метку времени.
Итак, мое путешествие началось.И я нашел такие вещи, как Serilog, NLog или мой старый друг, которых я использовал в прошлом, log4net.
Я попытался использовать Serilog, потому что он выглядел просто и легко, а также у него есть регистратор для файлов, которыйМне тоже нужно.Поэтому я начал выбрасывать старый консольный регистратор и интегрировать консоль Serilog и файловый регистратор.Но затем я нашел несколько примеров, подобных этому:
static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.File("consoleapp.log")
.CreateLogger();
...
}
Но это, кажется, противоречит моим скудным знаниям внедрения зависимостей, потому что я думаю, что это должно быть настроено так (предположение!):
private static void ConfigureServices(IServiceCollection services)
{
...
services.Configure<UnknownSerilogConfigurationClass>(config => config.FileName = "consoleapp.log");
}
Я видел, как кто-то упоминал, что Serilog сам по себе является фабрикой логгеров и, следовательно, анти-паттерном для DI.
Так что теперь я немного озадачен тем, куда идти.
Какую структуру ведения журналов, поддерживающую внедрение зависимостей, следует использовать для довольно простого консольного приложения?Должно быть то, что он должен позволять мне настраивать вывод так, чтобы он включал метку времени, а вывод должен быть в одной строке.
Есть предложения?