示例#1
0
        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);
            }
        }
示例#2
0
        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());
            }
        }
示例#3
0
        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
            {
            }
        }