如何使用 IIS Express 在 ASP.NET Core 中获取控制台输出

问题描述 投票:0回答:3

ASP.Net Core 文档这里 有一个很好的控制台日志输出,如下图所示,并带有各种 LogLevel 的颜色。我现在已经在 Visual Studio 中创建了一个应用程序,我发现它现在在 IIS Express 后面运行,并且我不再看到控制台。我记得当我运行 beta 版时,它确实直接弹出 Kestrel 并带有这个漂亮的控制台输出。

现在可以得到这个漂亮的窗户吗?

附注有点奇怪的是,文档中仍然包含这些您甚至看不到的图像。

c# asp.net-core kestrel-http-server
3个回答
30
投票

除了 Dawid Rutkowski 的回答之外,在顶部下拉列表中,不要选择 IISExpress,而是选择应用程序名称。您应该能够看到控制台和网页。


15
投票

是的,可以通过 IIS Express 实现。使用 Microsoft.Extensions.Logging.Debug nuget 包:https://github.com/aspnet/Logging/tree/master/src/Microsoft.Extensions.Logging.Debug。在 Startup.cs 中配置记录器:

loggerFactory.MinimumLevel = LogLevel.Debug;
loggerFactory.AddDebug( LogLevel.Debug );
var logger = loggerFactory.CreateLogger("Startup");
logger.LogWarning("Logger configured!");

并且:

Console.WriteLine("Hi!");

0
投票

所以这个解决方案对我不起作用,但有效的方法是在记录器配置中将

applyThemeToRedirectedOutput
设置为
true
。我在这里找到了这个解决方案:颜色主题未出现在输出中

Log.Logger = new LoggerConfiguration()
            .WriteTo.Console(theme: AnsiConsoleTheme.Literate, applyThemeToRedirectedOutput: true)
            .CreateLogger();

或者在 appsettings.json 中:

"WriteTo": [
  {
    "Name": "Console",
    "Args": {
      "applyThemeToRedirectedOutput": true,
      "theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Literate, Serilog.Sinks.Console",
      "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}   [{SourceContext}]{NewLine}{Exception}"
    }
  }
]

读取配置:

services.AddSerilog((hostingContext, loggerConfiguration) => loggerConfiguration.ReadFrom.Configuration(configuration));
© www.soinside.com 2019 - 2024. All rights reserved.