Как заставить консольный логгер в. net консольное приложение core 3.1 работать - PullRequest
3 голосов
/ 18 июня 2020

Я создаю консольное приложение. Net Core 3.1 и хочу использовать сборку при ведении журнала консоли. Существует множество статей о. net журналировании, но я не смог найти образец, который действительно записывает в консоль.

   namespace test
   {
      class Program
      {

        static void Main(string[] args)
        {
            var serviceProvider = new ServiceCollection()
                .AddLogging(config => config.ClearProviders().AddConsole().SetMinimumLevel(LogLevel.Trace))
                .BuildServiceProvider();

            //configure console logging
            serviceProvider
                .GetService<ILoggerFactory>();


            var logger = serviceProvider.GetService<ILoggerFactory>()
                .CreateLogger<Program>();

            logger.LogDebug("All done!");

            Console.Write("Yup");
        }
    }

Он компилируется и запускается, и даже пишет «Ага» в консоль, но с надписью "Все готово!" не отображается. Вывод в окне консоли: console-output

Это мой образец структуры проекта: enter image description here

Что мне не хватает?

Это было избавление от услуг: Исправление благодаря Джереми Лейкману:

            static void Main(string[] args)
        {
            using (var serviceProvider = new ServiceCollection()
                .AddLogging(config => config.ClearProviders().AddConsole().SetMinimumLevel(LogLevel.Trace))
                .BuildServiceProvider())
            {
                //configure console logging
                serviceProvider
                    .GetService<ILoggerFactory>();


                var logger = serviceProvider.GetService<ILoggerFactory>()
                    .CreateLogger<Program>();

                // run app logic

                logger.LogDebug("All done!");
            }

            Console.Write("Yup");
        }

1 Ответ

1 голос
/ 20 июня 2020

Чтобы ведение журнала не оказывало отрицательного воздействия на производительность вашей программы, оно может быть записано асинхронно.

Поставщик услуг должен также избавиться от всех услуг, когда они будут удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...