c# - 如何使 .net core 3.1 控制台应用程序中的控制台记录器工作

标签 c# .net-core console-application

我正在构建一个 .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");
        }
    }

它编译并运行,甚至向控制台写入“Yup”,但是“All done!”未显示。
控制台窗口中的输出:console-output

这是我的示例项目结构:
enter image description here

我错过了什么?

这是对服务的处理:感谢 Jeremy Lakeman 修复:
            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");
        }

最佳答案

为了使日志记录不会对程序的性能产生不利影响,它可以异步编写。
处理日志提供程序和其他日志记录类应该会导致日志刷新。
服务提供者还应在处置所有服务时对其进行处置。

关于c# - 如何使 .net core 3.1 控制台应用程序中的控制台记录器工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62454301/

相关文章:

c# - 无法在 VS2019 C# 上更改 Console.Title

c# - 控制台应用程序相互通信的推荐方式是什么?

c# - 如何从 "Full Screen"中的 C#/WPF 打开 Excel 文件?

c# - 如何强制浏览器在现有选项卡而不是新选项卡中打开我的网址?

.net - dotnet测试失败时中断PowerShell脚本

iis - 如何配置 .net 核心 API 以在 IIS 中工作?

c# - 如何调用 IEnumerable 函数

c# - 由于显卡内存不足而导致 WPF 3D 性能问题?

asp.net-core - appsettings.json 中的重复元素

c# - 检索网页时将语言首选项传递给 HtmlAgilityPack