using Common.Models.RequestResponse; using Common.Utility; using log4net; using Newtonsoft.Json; using System.Net; using System.Net.Http; using System.Web.Http.Filters; namespace ThirdPartyAPIs.CustomFilter { public class ApplicationExceptionLogFilter : ExceptionFilterAttribute { private readonly ILog _log = LogManager.GetLogger(typeof(ApplicationExceptionLogFilter)); public override void OnException(HttpActionExecutedContext context) { var controllerName = context.ActionContext.ActionDescriptor.ControllerDescriptor.ControllerName; var actionName = context.ActionContext.ActionDescriptor.ActionName; string error = "Error Occured on api/" + controllerName + "/" + actionName + " And Error Is :" + context.Exception.Message; LogicalThreadContext.Properties["client_ip_address"] = new GetClientIpAddress().GetIpAddress(context.Request); LogicalThreadContext.Properties["exception"] = context.Exception; _log.Error(context.Exception.Message); TPResponse jsonResponse = new TPResponse(); jsonResponse.ResponseCode = "999"; jsonResponse.Msg = context.Exception.Message; jsonResponse.Data = context.Exception; var a = JsonConvert.SerializeObject(jsonResponse); context.Response = context.Request.CreateErrorResponse(HttpStatusCode.BadRequest, a); } } }