C# ILogger 不打印控制台输出

C# ILogger doesn't print console output

我将 vs 2019 用于控制台应用程序(dotnet core 3.1),

Install-Package Microsoft.Extensions.Logging.Console -Version 3.1.2 

和这段代码:

using Microsoft.Extensions.Logging;
class Program
{
    static void Main(string[] args)
    {
        var loggerFactory = LoggerFactory.Create(builder =>
        {
            builder
                .AddFilter("Microsoft", LogLevel.Information)
                .AddFilter("System", LogLevel.Information)
                .AddFilter("TestRx.Program", LogLevel.Information)
                .AddConsole();
        });
        ILogger logger = loggerFactory.CreateLogger<Program>();
        logger.LogInformation("Example log message");
    }
}

它不在控制台上打印任何内容,为什么?

根据我的主机,我可以重现,看来你需要配置 LoggerFactory 来刷新控制台输出。

这可能是较新的 .NET Core 版本的性能特性。 Afaik 年长的人直接将其打印到控制台。

using var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.AddConsole();
});
                
var logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation("Example log message");

您可以通过创建大量日志来观察日志记录的那种异步性质,然后稍等片刻或直接退出程序:

ILogger logger = loggerFactory.CreateLogger<Program>();
for (int i = 0; i < 1000; i++)
{
    logger.LogInformation("Example log message2");
}
//Thread.Sleep(1000);

睡眠将有助于刷新所有日志!