You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

31 lines
1.4 KiB

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);
}
}
}