代码之家  ›  专栏  ›  技术社区  ›  Guerrilla

在asp.net核心应用程序的调试窗口中显示nlog输出

  •  1
  • Guerrilla  · 技术社区  · 6 年前

    是否可以在visual studio 2017调试窗口中显示哪些nlog(或内置调试器)正在登录?

    我已经将nlog设置为输出到一个文件,但是对于开发来说,能够在调试窗口中看到调试消息将非常方便。我可以看到一些关于如何使用console实现这一点的文章,但是对于asp.net项目,没有任何控制台输出,只有调试窗口。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Edward    6 年前

    是的,对于ASP.NET Core,有一些内置的记录器提供程序,如 Console Debug 将日志写入 Output Window 是的。

    如果你使用 WebHost.CreateDefaultBuilder(args) ,它将使用内置的提供程序 慰问 调试 ,您可以通过 输出窗口->ASP.NET Core Web服务器 为了一个干净的结果。

    为了 Getting started with ASP.NET Core 2 NLog ,它使用下面的代码清除所有其他日志提供程序。

    public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .ConfigureLogging(logging =>
        {
            logging.ClearProviders();
            logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
        })
        .UseNLog()  // NLog: setup NLog for Dependency injection
        .Build();
    

    如果还需要登录调试窗口,可以修改如下代码:

            public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .ConfigureLogging(logger => {
                    logger.AddNLog();
                    //logger.AddConsole(); //UnComment out this line if you did not use CreateDefaultBuilder
                })
                .Build();
    
        2
  •  1
  •   Rolf Kristensen Raúl Diego    5 年前

    简单的解决方法就是使用 OutputDebugString -目标(NetCore支持)

    https://github.com/NLog/NLog/wiki/OutputDebugString-target

    例子:

    <targets>
      <target name="debugger" xsi:type="OutputDebugString" layout="${logger}::${message}"/>
    </targets>
    
    <rules>
      <logger name="*" minlevel="Trace" writeTo="debugger" />
    </rules>
    

    可供选择 xsi:type="debugger" 以下内容:

    https://github.com/NLog/NLog/wiki/Debugger-target