public void LogGatewayUsage(GatewayUsageLogModel model) { var request = new RestRequest("/api/Log/GatewayUsage", Method.POST); request.AddJsonBody(model); var response = RestClient.Execute(request); if (response.StatusCode != HttpStatusCode.OK) { throw CreateException(response); } }
public async Task <IHttpActionResult> LogGatewayUsage(GatewayUsageLogModel model) { using (var dbContext = new DataContext()) { var logItem = new GatewayUsageLog(); logItem.CreatedTimestamp = model.CreatedTimestamp; logItem.SessionToken = model.SessionToken; logItem.ClientIPAddress = model.ClientIPAddress; logItem.Method = model.Method; logItem.ControllerName = model.ControllerName; logItem.Arguments = model.Arguments; logItem.ResponseCode = model.ResponseCode; logItem.Exception = model.Exception; logItem.ResponseType = model.ResponseType; logItem.DurationInMilliSeconds = model.DurationInMilliSeconds; dbContext.GatewayUsageLogs.Add(logItem); await dbContext.SaveChangesAsync(); return(Ok()); } }
public override void OnActionExecuting(ActionExecutingContext filterContext) { this._logItem = new GatewayUsageLogModel(); this._logItem.CreatedTimestamp = DateTime.UtcNow; try { var descriptor = filterContext.ActionDescriptor; this._logItem.SessionToken = string.Empty; this._logItem.ClientIPAddress = GetClientIp(filterContext.HttpContext.Request); this._logItem.Method = descriptor.ActionName; this._logItem.ControllerName = descriptor.ControllerDescriptor.ControllerType.FullName; var arguments = filterContext.ActionParameters; if (arguments != null && arguments.Count > 0) { var args = Newtonsoft.Json.JsonConvert.SerializeObject(arguments); this._logItem.Arguments = Newtonsoft.Json.JsonConvert.SerializeObject(arguments).Substring(0, args.Length >= MaxContentLength ? MaxContentLength : args.Length);; } else { filterContext.HttpContext.Request.InputStream.Position = 0; var reader = new StreamReader(filterContext.HttpContext.Request.InputStream); { this._logItem.Arguments = reader.ReadToEnd(); Log.Debug(this._logItem.Arguments); } } } catch { } }