logger implement example ejemplo configurar c# asp.net asp.net-web-api error-handling nlog

c# - implement - nlog web config example



Manejo de excepciones globales en Web API 2.1 y NLog (2)

En Web API 2.1 es el nuevo Manejo global de errores . Encontré un ejemplo de cómo registrar excepciones en Elmah ( muestra elmah ). Pero uso NLog para registrar errores en la tabla de la base de datos. ¿Es posible usar el Manejo global de errores de la API web con NLog? Por favor, proporciona un ejemplo.


Otra cosa que podría ser un práctico paquete WebApiContrib.Tracing.NLog que le permite usar la interfaz ITraceWriter para generar registros con NLog. Lo bueno de ITraceWriter es que "todos los rastreos se pueden correlacionar con la única solicitud que provocó la ejecución de ese código" (consulte este enlace ).


En realidad es bastante simple, implementas IExceptionLogger a mano o IExceptionLogger de la clase base, ExceptionLogger .

public class NLogExceptionLogger : ExceptionLogger { private static readonly Logger Nlog = LogManager.GetCurrentClassLogger(); public override void Log(ExceptionLoggerContext context) { Nlog.LogException(LogLevel.Error, RequestToString(context.Request), context.Exception); } private static string RequestToString(HttpRequestMessage request) { var message = new StringBuilder(); if (request.Method != null) message.Append(request.Method); if (request.RequestUri != null) message.Append(" ").Append(request.RequestUri); return message.ToString(); } }

También agréguelo a la configuración:

var config = new HttpConfiguration(); config.Services.Add(typeof(IExceptionLogger), new NLogExceptionLogger());

Puede encontrar una solución de muestra completa here .