使用.Net Core 2.0 Web应用程序登录到控制台

ope*_*sas 3 asp.net logging dependency-injection asp.net-core-2.0

我正在使用.Net Core迈出第一步

刚刚使用创建了一个Web Hello世界

dotnet new web
Run Code Online (Sandbox Code Playgroud)

我可以看到已启用某种日志记录。我只想将某些内容记录到控制台。

但是我不知道如何从

app.Run(async (context) =>
{
    await context.Response.WriteAsync("Hello World!!!");
});
Run Code Online (Sandbox Code Playgroud)

我尝试了Console.WriteLine,但显然不起作用。

还按照本指南https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-(csproj---vs2017)对NLog进行了尝试,但我不知道如何注入记录器。

我只是出于教育目的而四处寻找,而不是寻找真正的记录器,因此也许有更好/更容易的选择。

ope*_*sas 5

我可以这样实现:

[...]
using Microsoft.Extensions.Logging;
[...]
namespace web
{
    public class Startup
    {
        ILogger log;
        public Startup(ILoggerFactory loggerFactory)
        {
            log = loggerFactory.CreateLogger("Logger");
        }
        [...]

        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole();
            loggerFactory.AddDebug();

            [...]

            app.Run(async (context) =>
            {
                log.LogInformation("logging!");
                await context.Response.WriteAsync("Hello World!");
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

还必须将一个appsettings.json文件添加到项目的根目录

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
     }
  }
}
Run Code Online (Sandbox Code Playgroud)