首页 > 解决方案 > 如何在 C# 中登录到控制台

问题描述

我想使用 Microsoft.Extensions.Logging 将内容记录到控制台。我已经这样设置了:

static void Main()
{
    ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
    ILogger logger = loggerFactory.CreateLogger<Program>();
    logger.LogInformation("Current directory {0}", Directory.GetCurrentDirectory());
}

但是,没有任何内容写入控制台。

标签: c#logging.net-coreconsoleconsole-application

解决方案


问题是ConsoleLoggerProvider添加到loggerFactoryby 的AddConsoleIDisposable并且必须被处理掉,以便刷新输出。处置loggerFactory遗嘱就可以做到这一点。因此,要么loggerFactory.Dispose()在程序末尾调用,要么using在创建 loggerFactory 时添加,如下所示:

static void Main()
{
    using ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
    ILogger logger = loggerFactory.CreateLogger<Program>();
    logger.LogInformation("Current directory {0}", Directory.GetCurrentDirectory());
}

推荐阅读