4

我已将 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");
    }
}

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

4

1 回答 1

4

根据我的托管,我可以重现,看来您需要处理 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);

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

于 2020-03-09T11:52:46.287 回答