ASP.Net核心日志记录和DebugView.exe

时间:2016-10-07 22:14:14

标签: logging asp.net-core asp.net-core-mvc

我曾经使用DebugView.exe在传统的ASP.Net中查看来自我的Web应用程序的调试消息。我只需要使用Debug.WriteLine(“要显示的消息”);它显示在DebugView的窗口中。我还可以使用该方法在Production Server上跟踪/查看消息 例如。 http://woutercx.com/2013/08/23/debugview-tool-how-it-saved-my-day/

在ASPNetCore中,我试图通过使用Logger来做同样的事情。我可以在VS2015输出窗口中正确查看所有记录。但我在DebugView软件中再也看不到它了。 MVC& amp;和其他数千条记录行缺少那些记录消息。 ASP引擎和查看我只想查看的消息真的很难。

请参见下图中的示例:

enter image description here

无论如何在ASP.Net Core中查看DebugView中的那些日志消息?或者无论如何要在ASPNet.Core中删除那些额外的记录?

我确实尝试在Startup.cs中排除这些行......但还没有成功。

loggerFactory.AddConsole((cat, level) => cat.StartsWith("WindowsAuthentication.") && level == LogLevel.Debug);
loggerFactory.AddDebug(LogLevel.Debug);

1 个答案:

答案 0 :(得分:1)

如果调试器被连接,看起来源只调用Debug.WriteLine,这意味着它在生产中是无操作的(除非您使用附加的调试器进行远程调试)。请参阅https://github.com/aspnet/Logging/blob/dev/src/Microsoft.Extensions.Logging.Debug/DebugLogger.cs#L48-L50上GitHub上的相关源代码行。它说:

    public bool IsEnabled(LogLevel logLevel)
    {
        // If the filter is null, everything is enabled
        // unless the debugger is not attached
        return Debugger.IsAttached &&
            logLevel != LogLevel.None &&
            (_filter == null || _filter(_name, logLevel));
    }

我怀疑您可以编写自己的Debug Logger Provider,它看起来几乎与GitHub中的相同,但使用IsEnabled方法忽略Debugger.IsAttached检查。