如何在 运行 Rider 中的 dotnet 核心应用程序时显示日志?

How to display logs when running a dotnet core app in Rider?

所以我已经从 Visual Studio 切换到 Rider,到目前为止,一切都很棒。

我唯一缺少的是日志输出。该解决方案由 4 个项目组成,当我在 Visual Studio 2017 年启动它们时,我在输出 window.

中获得了日志

使用 Rider,我可以在启动配置中设置 IIS Express 输出,但是,它没有给我任何实际的 dotnet 核心日志记录,只是 requests/status 代码。

请注意,我不是在调试 运行 应用程序。

我的所有项目都使用默认 WebHostBuilder

private static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
   WebHost.CreateDefaultBuilder(args)
     .UseStartup<Startup>();

我唯一的预感是我的应用程序使用 VueCliMiddleware (repo) 从它的构建过程中输出日志,到目前为止给我 linting 错误。

这告诉我我需要采取额外的步骤来显示默认的 aspnetcore 日志,有人可能知道我可能缺少什么配置吗?

TL;DR: 检查你的 web.config

这完全是我的错。故障出在我的项目中 web.config 中,因为我过去常常在 VS2017 下通过实际 IIS 运行 它们,而不是 IIS Express,以便在本地网络上访问我的服务。这是生成的内容:

<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" startupTimeLimit="3600" requestTimeout="00:10:00">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>

很可能 stdoutLogEnabled="false" 是日志未显示的主要原因。

我将上面的替换为并且一切都很好(删除它也有效我保留了它因为我需要告诉 IIS 最大文件上传大小是多少,如果你使用的是 Kestrel 删除它。):

<aspNetCore processPath="%LAUNCHER_PATH%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" arguments="%LAUNCHER_ARGS%">
</aspNetCore>