首页 > 解决方案 > 无法让控制台日志记录在 .net core 2.0 中工作

问题描述

我有以下代码:

var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);

Configuration = builder.Build();
var serviceProvider = new ServiceCollection()
    .AddLogging(loggingBuilder => loggingBuilder.AddConfiguration(Configuration.GetSection("Logging"))
                                                .AddConsole()
                                                .AddDebug())
    .AddSingleton<IEngine, Engine>()
    .BuildServiceProvider();
var engine = serviceProvider.GetService<IEngine>();
await engine.RunAsync();

public class Engine : IEngine
{
    private readonly ILogger<Engine> logger;

    public Engine(ILoggerFactory loggerFactory)
    {
        logger = loggerFactory.CreateLogger<Engine>();
    }

    public async Task RunAsync()
    {
        logger.LogError("Test");
        logger.LogTrace("Starting engine!");
    }
}

然后我有以下配置

{
  "Logging": {
    "IncludeScopes": false,
    "Console": {
      "LogLevel": {
        "Default": "Trace",
        "System": "Information",
        "Microsoft": "Information"
      }
    }
  }
}

但是没有任何东西记录到控制台,但我确实在调试日志中得到了输出,所以我错过了什么?

我已经验证它找到了配置文件,所以这不是问题!

标签: c#.netconsole.net-core

解决方案


好吧,.net core 2.0 在打印到控制台之前似乎有一个延迟。

所以它正在工作,我只是没有等待它冲洗!


推荐阅读