コード例 #1
0
ファイル: LogHelper.cs プロジェクト: radtek/XuHos
 /// <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);
     }
 }
コード例 #2
0
        /// <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));
        }