/// <summary> /// 写入日志 /// </summary> /// <param name="CollectName"></param> /// <param name="log"></param> public static void WriteTrackLog(string CollectName, ApiTrackLog log) { if (log != null) { XuHos.Common.Log.Configuration.LogAppender.WriteLog(CollectName, log); } }
/// <summary> /// 在请求执行完后 记录请求的数据以及返回数据 /// </summary> /// <param name="actionExecutedContext"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public override Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken) { try { if (!SkipLogging(actionExecutedContext.ActionContext)) { object beginTime = null; if (actionExecutedContext.Request.Properties.TryGetValue(key, out beginTime)) { DateTime time = DateTime.FromBinary(Convert.ToInt64(beginTime)); HttpRequest request = HttpContext.Current.Request; ApiTrackLog apiActionLog = new ApiTrackLog { RequestHeaders = new System.Collections.Generic.Dictionary <string, string>(), Id = Guid.NewGuid(), General = new WebApiTrackLogGeneral() { statusCode = actionExecutedContext.Response == null ? 500 : (int)actionExecutedContext.Response.StatusCode, ///获取action名称 actionName = actionExecutedContext.ActionContext.ActionDescriptor.ActionName, ///获取Controller 名称 controllerName = actionExecutedContext.ActionContext.ActionDescriptor.ControllerDescriptor.ControllerName, navigator = request.UserAgent, ///获取用户token userId = SecurityHelper.IsLogin() ? SecurityHelper.LoginUser.UserID : "", ///获取访问的ip ip = request.UserHostAddress, remoteHostName = request.UserHostName, urlReferrer = request.UrlReferrer != null ? request.UrlReferrer.AbsoluteUri : "", remoteBrowser = request.Browser.Browser + " - " + request.Browser.Version + " - " + request.Browser.Type, comments = msg, requestUri = request.Url.AbsoluteUri, requestType = request.RequestType, appId = BLL.Sys.Implements.ApiSecurityService.GetAppId(getRequestParam("apptoken")), }, Statistics = new WebApiTrackLogStatistics() { ///获取action开始执行的时间 enterTime = time, ///获取执行action的耗时 costTime = (DateTime.Now - time).TotalMilliseconds, }, ///获取request提交的参数 RequestParamters = GetRequestValues(actionExecutedContext), //获取response响应的结果 Response = GetResponseValues(actionExecutedContext), }; if (HttpContext.Current.Request != null && HttpContext.Current.Request.Headers != null) { for (var i = 0; i < request.Headers.Keys.Count; i++) { var key = request.Headers.Keys[i]; apiActionLog.RequestHeaders.Add(key, request.Headers[key]); } } XuHos.Common.LogHelper.WriteTrackLog("TrackKMEHospApiOperateLog", apiActionLog); } } } catch (Exception ex) { XuHos.Common.LogHelper.WriteError(ex); } return(base.OnActionExecutedAsync(actionExecutedContext, cancellationToken)); }