Asp.net 内核 + IIS Express。如何查看日志消息?

Asp.net core + IIS Express. How to view log messages?

我正在尝试以这种方式在 ASP.NET Core 中打印日志消息:

Console.WriteLine( "Hello World!" );

loggerFactory.MinimumLevel = LogLevel.Debug;
loggerFactory.AddConsole( LogLevel.Debug );
var logger = loggerFactory.CreateLogger("Startup");
logger.LogWarning( "Hi!" );

我在哪里可以看到这条消息?

输出 window 不包含此消息。

如果我 运行 Web 项目,它 运行 是我可以看到消息的 dnx 控制台,但这并不方便。

如果我 运行 作为 IIS Express 项目,我看不到控制台或消息。

有没有办法查看Visual Studio中的消息?

转到文档 => IISExpress => 日志.

这就是您要找的。

IIS Express 不会将其日志输出到 Visual Studio 的输出 window。

您需要使用不同的日志提供程序。

将其写入日志文件。您可以为此使用一个库,例如 Serilog:

using Serilog;

public class Startup
{
  public Startup(IHostingEnvironment env)
  {
      Log.Logger = new LoggerConfiguration()
          .WriteTo.File("log.txt")
          .CreateLogger();
...
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
                        ILoggerFactory loggerFactory)
  {
      loggerFactory.AddSerilog();

您需要 this NuGet 个包裹。

你可以使用Debug listener来实现你想要的:

"dependencies": {
  "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final"
}

Console.WriteLine( "Hello World!" );

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

None 的其他答案解决了实际问题:“当 运行 使用 IIS Express 的项目时,我们如何看到这些消息?”。所以,我决定添加我自己的,我希望它能帮助别人。

当您选择 IIS Express 时,通常的控制台 window 不会出现。但您仍然可以按照以下步骤查看这些消息。

  1. 在 Visual Studio 中寻找 Output window。如果您已经拥有它,请跳过下一步
  2. 转到查看菜单 > 输出或按 Ctrl + W,O。将显示输出 window。
  3. 在输出 window 中,将下拉列表更改为 "<-your-project-name-> ASP.NET Core Web Server" 或类似内容.
  4. 您应该能够在此处看到这些消息。

我使用的是 VS 2019,以上步骤可能因您的 IDE 版本而异。