Beispiel #1
0
        private ApiLogModel ExtractLoggingInfoFromRequest(HttpRequestMessage request)
        {
            var info = new ApiLogModel();

            info.HttpMethod = request.Method.Method;
            info.Url        = request.RequestUri.AbsolutePath;
            info.IPAddress  = HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : "0.0.0.0";
            info.Data       = request.RequestUri.Query;
            if (request.Content.Headers.Contains("Content-Type"))
            {
                if (request.Content.Headers.GetValues("Content-Type").First().ToLower().Contains("application/json"))
                {
                    info.Data = request.Content.ReadAsStringAsync().Result;
                }
            }

            info.CreatedOn = DateTime.Now;
            if (request.Headers.Any())
            {
                string headers = "";
                foreach (var head in request.Headers)
                {
                    headers += head.Key + "=" + head.Value.First() + ";";
                }
                info.Headers = headers;
            }

            return(info);
        }
Beispiel #2
0
 private ApiLogModel ExtractResponseLoggingInfo(ApiLogModel with, HttpResponseMessage result)
 {
     if (result.StatusCode == System.Net.HttpStatusCode.OK)
     {
     }
     return(with);
 }
Beispiel #3
0
        public async Task InvokeAsync(HttpContext context, RequestDelegate next)
        {
            HttpModel httpModel;

            httpModel = await LogRequest(context);

            httpModel = await LogResponse(context, next, httpModel);


            if (!context.Request.Path.Value.StartsWith("/api"))
            {
                return;
            }

            var logLevel = Regex.IsMatch(httpModel.StatusCode.ToString(), RegexErrors)
                ? "ERROR" : "INFO";

            var log = new ApiLogModel
            {
                App     = ProjectName,
                Team    = _options.Team,
                Kind    = "server",
                Version = CurrentVersion,
                Level   = logLevel,
                Http    = httpModel
            };

            var logMessage = log.ToJson();

            _logger.LogInformation(new EventId(), logMessage);
        }
Beispiel #4
0
 public static void Log(ApiLogModel model)
 {
     using (FileStream fs = new FileStream(GetFileToUse(true), FileMode.Append, FileAccess.Write))
     {
         using (System.IO.TextWriter writer = new StreamWriter(fs))
         {
             var csv = new CsvWriter(writer);
             csv.WriteRecord(model);
             writer.Dispose();
         }
     }
 }
        private static ApiLogModel BuildApiLog(HttpRequest request)
        {
            ApiLogModel log = new ApiLogModel()
            {
                Hash         = request.Headers["Hash"],
                Token        = request.Headers["Token"],
                Host         = request.Url.Host,
                PathAndQuery = request.Url.PathAndQuery,
                Server       = Environment.MachineName,
                UserAgent    = request.UserAgent,
                IpAddress    = IpUtility.GetIp(),
                IMEI         = request.Headers["IMEI"],
                Device       = request.Headers["Device"],
                OsVersion    = request.Headers["OsVersion"],
                MacAddress   = request.Headers["MacAddress"]
            };

            return(log);
        }
Beispiel #6
0
        public virtual int AddApiLog(ApiLogModel log)
        {
            DbCommand cmd = GetStoredProcCommand("P_Client_AddApiLog");

            AddInParameter(cmd, "Hash", DbType.String, GetParameterValue(log.Hash));
            AddInParameter(cmd, "Host", DbType.String, GetParameterValue(log.Host));
            AddInParameter(cmd, "ValidationResult", DbType.String, GetParameterValue(log.ValidationResult));
            AddInParameter(cmd, "PathAndQuery", DbType.String, GetParameterValue(log.PathAndQuery));
            AddInParameter(cmd, "Server", DbType.String, GetParameterValue(log.Server));
            AddInParameter(cmd, "Token", DbType.String, GetParameterValue(log.Token));
            AddInParameter(cmd, "UserAgent", DbType.String, GetParameterValue(log.UserAgent));
            AddInParameter(cmd, "Controller", DbType.String, GetParameterValue(log.Controller));
            AddInParameter(cmd, "Action", DbType.String, GetParameterValue(log.Action));
            AddInParameter(cmd, "IpAddress", DbType.String, GetParameterValue(log.IpAddress));
            AddInParameter(cmd, "IMEI", DbType.String, GetParameterValue(log.IMEI));
            AddInParameter(cmd, "Device", DbType.String, GetParameterValue(log.Device));
            AddInParameter(cmd, "OsVersion", DbType.String, GetParameterValue(log.OsVersion));
            AddInParameter(cmd, "MacAddress", DbType.String, GetParameterValue(log.MacAddress));
            AddOutParameter(cmd, "ApiLogId", DbType.Int32, 4);
            ExecuteNonQuery(cmd);
            return(GetOutputParameter <Int32>(cmd, "@ApiLogId"));
        }
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            bool ignoreValidate = (actionContext.ActionDescriptor.GetCustomAttributes <IgnoreValidateAttribute>().Count > 0);

            HttpRequest request = HttpContext.Current.Request;

            SpecialLog(request);
            ApiLogModel log = BuildApiLog(request);

            log.Controller = actionContext.ControllerContext.ControllerDescriptor.ControllerName;
            log.Action     = actionContext.ActionDescriptor.ActionName;
            CheckResult result = ignoreValidate ? CheckResult.FROM_ZJB : Check(request);

            log.ValidationResult = result.ToString();
            if (result == CheckResult.INVALID_HASH || result == CheckResult.INVALID_USERAGENT)
            {
                apiBll.AddApiLog(log);
                actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Forbidden,
                                                                              new ApiResponse(Metas.INVALID_PERMISSION, null));
                return;
            }
            apiBll.AddApiLog(log);
        }
 public ActionResult ApiLogDetails(ApiLogModel model)
 {
     return(View(model));
 }
Beispiel #9
0
 public int AddApiLog(ApiLogModel log)
 {
     return(apiDal.AddApiLog(log));
 }