【问题标题】:.NET Core 2.2 WebAPI logging something.NET Core 2.2 WebAPI 记录一些东西
【发布时间】:2018-12-13 14:58:50
【问题描述】:

我有一个基本的 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 代码。这是我的第一个 .NET 项目,所以请不要犹豫,提出任何问题,我反应灵敏。

更新 我刚刚下载了DebugView,并且能够看到我记录的内容。仍在寻找不依赖下载工具的替代解决方案,因为日志记录非常基础。

【问题讨论】:

  • 你可以看看here
  • @OlegI 我似乎无法弄清楚如何添加监听器。我尝试添加以下内容: TextWriterTraceListener writer = new TextWriterTraceListener(System.Console.Out); Debug.Listeners.Add(writer);但它抱怨“调试”不包含“听众”的定义有什么想法吗?
  • 但您没有输出到Console。您正在输出到TraceDebug。那些是不同的。这就是您在 DebugView 中看到它的原因。如果需要,请尝试Console.WriteLine 或其他方式
  • @AndreyBorisko 我试过Console.WriteLine("Test");,但在控制台中仍然看不到它
  • @sbattoh 我觉得logger就是你要找的东西

标签: .net .net-core


【解决方案1】:

对于日志记录,您可以使用 NLog.Web.AspNetCore 包。更多详情请参考以下链接:

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

谢谢。

【讨论】:

    【解决方案2】:

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

    现在只需登录到您的控制台。

    第 1 步:添加提供程序,即在您的情况下使用控制台。 在你的program.cs中,在main方法之后粘贴这个

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

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      相关资源
      最近更新 更多