В ASP.NET Web API, как просмотреть подробности TraceRecord на встроенной странице?

Я включил трассировку для своего приложения 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")));

Мне просто интересно, есть ли какая-нибудь встроенная функция / инструмент / страница, которую я могу использовать / контролировать для просмотра деталей трассировки?

если возможно, я бы хотел избежать создания моей собственной таблицы базы данных и страницы.

1 ответ

Решение

В качестве альтернативы вы можете установить пакет nuget Microsoft.AspNet.WebApi.Tracing и затем вызвать config.EnableSystemDiagnosticsTracing(); в вашем WebApiConfig.cs, Это расширение регистрирует 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>

Другие вопросы по тегам