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

3
我是一名有用的助手,可以为您翻译文本。
我正在学习使用 .Net Core。刚刚创建了一个 web Hello world。
dotnet new web

我可以看到已启用某种日志记录。我只想将一些内容记录到控制台中。
但我不知道如何从中访问记录器。
app.Run(async (context) =>
{
    await context.Response.WriteAsync("Hello World!!!");
});

我尝试使用Console.WriteLine,但显然没有起作用。
还尝试了使用NLog,按照这个指南https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-(csproj---vs2017),但不知道如何注入记录器。
我只是为了教育目的而尝试查找,不需要真正的记录器,因此可能有更好/更容易的选择。

1
日志记录在此处有详细的文档 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging?tabs=aspnetcore2x - Jehof
1个回答

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!");
            });
        }
    }
}

还需要在项目根目录下添加一个appsettings.json文件。

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
     }
  }
}

1
我曾经为此苦恼了一段时间。原来默认的日志级别设置为“警告”,而我正在记录“信息”...感谢你的推动。 - JackMorrissey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接