C#ILogger不';t打印控制台输出

C#ILogger不';t打印控制台输出,c#,printing,console,ilogger,C#,Printing,Console,Ilogger,我已经将VS2019用于控制台应用程序(dotnet core 3.1) 该代码: using Microsoft.Extensions.Logging; class Program { static void Main(string[] args) { var loggerFactory = LoggerFactory.Create(builder => { builder .AddF

我已经将VS2019用于控制台应用程序(dotnet core 3.1)

该代码:

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");
    }
}
使用Microsoft.Extensions.Logging;
班级计划
{
静态void Main(字符串[]参数)
{
var loggerFactory=loggerFactory.Create(builder=>
{
建设者
.AddFilter(“Microsoft”,LogLevel.Information)
.AddFilter(“系统”,日志级别信息)
.AddFilter(“TestRx.Program”,LogLevel.Information)
.AddConsole();
});
ILogger logger=loggerFactory.CreateLogger();
logger.LogInformation(“示例日志消息”);
}
}

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

取决于我的主机,我可以复制,而且您似乎需要处理LoggerFactory以刷新控制台输出

这可能是较新的.NET核心版本的一个性能特性。Afaik旧版直接打印到控制台

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

            {
                ILogger logger = loggerFactory.CreateLogger<Program>();
                logger.LogInformation("Example log message");

            }
使用(var loggerFactory=loggerFactory.Create(builder=>
{builder.AddConsole();})
{
ILogger logger=loggerFactory.CreateLogger();
logger.LogInformation(“示例日志消息”);
}
您可以通过创建大量日志来观察日志记录的异步性质,然后等待一段时间或直接退出程序:

ILogger logger = loggerFactory.CreateLogger<Program>();
            for (int i = 0; i < 1000; i++)
            {
                logger.LogInformation("Example log message2");
            }
            //Thread.Sleep(1000);
ILogger logger=loggerFactory.CreateLogger();
对于(int i=0;i<1000;i++)
{
logger.LogInformation(“示例日志消息2”);
}
//睡眠(1000);

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

刚刚测试并按预期打印:
info:app.Program[0]示例日志消息
。。。
ILogger logger = loggerFactory.CreateLogger<Program>();
            for (int i = 0; i < 1000; i++)
            {
                logger.LogInformation("Example log message2");
            }
            //Thread.Sleep(1000);