记录不输出任何东西

Logging not outputing anything

我正在尝试为 C# 控制台项目使用日志记录。每个在线资源似乎都适用于 asp.net 并使用 appsettings.json,这是我的项目似乎没有的东西,所以我希望它与 asp.net 相关。我找到了一个使用以下示例进行记录的视频。

using Microsoft.Extensions.Logging;

namespace ConsoleTesting;

internal class Program
{
    public static void Main()
    {

        var loggerFactory = LoggerFactory.Create(builder =>
                                          {
                                              builder.AddConsole();
                                          });

        var logger = loggerFactory.CreateLogger("Logger");

        logger.LogCritical("Critical");
        logger.LogDebug("Debug");
        logger.LogInformation("Information");


        Console.WriteLine("Hello World!");
    }
}

但是除了 Hello World 之外,这不会在控制台中打印任何内容。

我认为问题是 timing/buffering 之一。如果你只是在末尾添加一个 Thread.Sleep(5000);,我怀疑你会看到所有的输出。 (我在我的电脑上做。)

当然,您不想向您的真实代码添加 Thread.Sleep 调用 - 您真的想刷新所有记录器。

通过实验,处理 LoggerFactory 似乎是正确的。在您的简单示例中,只需将声明更改为 using 语句即可:

using var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());

LoggerFactory 将在方法结束时处理,这至少 似乎 刷​​新记录器。不过,我还没有文档来证明这是正确的做事方式。