如何在c#中登录控制台

Sun*_*day 8 c# console logging console-application .net-core

我想使用 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());
}
Run Code Online (Sandbox Code Playgroud)

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

Sun*_*day 14

问题是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());
}
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的,但还要记住添加 Nuget 包 Microsoft.Extensions.Logging.Console,否则无法找到 .AddConsole。 (8认同)