.NET Core 2.2 WebAPI记录某些内容

时间:2018-12-13 14:58:50

标签: .net .net-core

我有一个基本的WebAPI .NET Core 2.2项目,并且正在尝试记录一些内容:

// GET api/values
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        System.Diagnostics.Trace.WriteLine("THIS IS A TEST");
        System.Diagnostics.Debug.WriteLine("THIS IS A TEST");
        return new string[] { "value1", "value2" };
    }

不幸的是,我的输出或控制台中什么都没有显示。我正在使用Visual Studio Code。这是我的第一个.NET项目,请随时提出任何问题,我反应超级好。

更新 我刚刚下载了SVG.JS,并且可以看到自己记录的内容。仍在寻找一种不依赖于下载工具的替代解决方案,因为日志记录是非常基本的。

2 个答案:

答案 0 :(得分:3)

对于日志记录,可以使用NLog.Web.AspNetCore包。有关更多详细信息,请参见下面的链接:

https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-2

谢谢。

答案 1 :(得分:0)

ASP.NET Core内置了对日志记录的支持,并允许开发人员轻松地利用其首选的日志记录框架。 日志记录服务与将日志存储或显示到特定介质(例如控制台,调试,跟踪侦听器)的日志记录提供程序一起使用。例如:控制台提供程序在控制台上显示日志,而Azure应用程序见解提供程序将日志存储在Azure应用程序见解中,类似地,我们还有更多的提供程序,例如Nlog等。

现在只需登录到控制台即可。

第1步:添加一个提供程序,即您所用的控制台。 在main方法之后,将其粘贴到program.cs中

public static void Main(string[] args)
{
    var host = CreateWebHostBuilder(args).Build();

    var todoRepository = host.Services.GetRequiredService<ITodoRepository>();
    todoRepository.Add(new Core.Model.TodoItem() { Name = "Feed the dog" });
    todoRepository.Add(new Core.Model.TodoItem() { Name = "Walk the dog" });

    var logger = host.Services.GetRequiredService<ILogger<Program>>();
    logger.LogInformation("Seeded the database.");

    host.Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .ConfigureLogging(logging =>
        {
            logging.ClearProviders();
            logging.AddConsole(); \\adding to console
        });

第2步:然后通过构造函数将ILogger注入您的类中

public class AboutModel
{
    private readonly ILogger _logger;

    public AboutModel(ILogger<AboutModel> logger)
    {
        _logger = logger;
    }
}

第3步:然后仅提及您要保存的日志类型并给出其消息。

public void OnGet()
    {
    Message = $"About page visited at {DateTime.UtcNow.ToLongTimeString()}";
    _logger.LogInformation("Message displayed: {Message}", Message);
    }

在上述方法中,我们使用信息级别日志,该日志指定程序正确结束。

希望这会有所帮助。