Rastreamento na API Web
Olá Pessoal, tudo bem?
Recentemente precisei depurar uma api que criei utilizando Microsoft.AspNet.WebApi. Com isso fui pesquisar na net como depurar o que estava acontecendo em cada conexão e verifiquei que é possível habilitar o SystemDiagnosticsTracing, veja como é fácil.
HttpConfiguration webApiConfiguration = new HttpConfiguration();
SystemDiagnosticsTraceWriter traceWriter = webApiConfiguration.EnableSystemDiagnosticsTracing();
traceWriter.IsVerbose = true;
traceWriter.MinimumLevel = TraceLevel.Warn;
Com isso sua api está registrando todas as mensagens de warning, error e fatal da sua api.
Mas se você ainda deseja customizar essas mensagens de rastreio você pode o seu prório método de Trace e usar ele, veja um exemplo:
SimpleTrace.cs
public class SimpleTracer : ITraceWriter
{
public SimpleTracer() { }
public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction)
{
TraceRecord rec = new TraceRecord(request, category, level);
traceAction(rec);
WriteTrace(rec);
}
protected void WriteTrace(TraceRecord traceRecord)
{
var message = string.Format("{0} {1}: Category={2}, Level={3} {4} {5} {6} {7}",
traceRecord.Request.Method,
traceRecord.Request.RequestUri,
traceRecord.Category,
traceRecord.Level,
traceRecord.Kind,
traceRecord.Operator,
traceRecord.Operation,
traceRecord.Exception != null
? traceRecord.Exception.GetBaseException().Message
: !string.IsNullOrEmpty(traceRecord.Message)
? traceRecord.Message
: string.Empty
);
System.Diagnostics.Trace.WriteLine(message);
}
}
webApiConfiguration.Services.Replace(typeof(ITraceWriter), new SimpleTracer());
Pronto, com isso você já consegue rastrear suas mensagens na api e tomar as devidas ações.
Qualquer dúvida deixe um comentário e eu te vejo no próximo post!