在ASP.NET Web API中,如何查看内置页面上的TraceRecord详细信息

本文关键字:内置 详细信息 TraceRecord 何查看 NET ASP Web API | 更新日期: 2023-09-27 18:22:08

我已经为我的Web API应用程序启用了跟踪,创建了一个新的Trace Writter,它只将详细信息记录在一个文件中:

public class MyTraceWriter : ITraceWriter
{
    private readonly ILog _log;
    public MyTraceWriter(ILog log)
    {
        _log = log;
    }
    public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction)
    {
        var traceRecord = new TraceRecord(request, category, level);
        traceAction(traceRecord);
        _log.Info(GetDetails(traceRecord));
    }
    private string GetDetails(TraceRecord traceRecord)
    {
        var sb = new StringBuilder();
        sb.AppendFormat("'r'n't{0} {1}'r'n'tCategory={2}, Level={3}, Kind={4}'r'n'tOperator:{5}, Operation: {6}",
                traceRecord.Request.Method,
                traceRecord.Request.RequestUri,
                traceRecord.Category,
                traceRecord.Level,
                traceRecord.Kind,
                traceRecord.Operator,
                traceRecord.Operation);
        if (traceRecord.Exception != null)
        {
            sb.AppendFormat("'r'n'tException : {0}", traceRecord.Exception.GetBaseException().Message);
        }
        else if (traceRecord.Message != null)
        {
            sb.AppendFormat("'r'n'tMessage : {0}", traceRecord.Message);
        }
        sb.AppendLine();
        return sb.ToString();
    }
}

然后在Global.ascx:中注册我的课程

config.Services.Replace(typeof(ITraceWriter),
                    new MyTraceWriter(LogManager.GetLogger("Tracing")));

我只是想知道有没有内置的功能/工具/页面可以让我使用/监控来查看跟踪的详细信息?

如果可能的话,我希望避免创建自己的自定义数据库表和页面。

在ASP.NET Web API中,如何查看内置页面上的TraceRecord详细信息

您也可以安装"Microsoft.AspNet.WebApi.Tracing"nuget包,然后在WebApiConfig.cs中调用config.EnableSystemDiagnosticsTracing();。此扩展为您注册SystemDiagnosticsTraceWriter

您还可以注册一个EventLog跟踪侦听器来将事件写入EventLog,在这种情况下,您可以使用EventViewer来查看数据。

示例:

<configuration> <system.diagnostics> <trace autoflush="false" indentsize="4"> <listeners> <add name="myListener" type="System.Diagnostics.EventLogTraceListener" initializeData="TraceListenerLog" /> </listeners> </trace> </system.diagnostics>