示例#1
0
        /// <summary>
        /// 重写执行后方法
        /// </summary>
        /// <param name="invocation"></param>
        protected override void PostProceed(IInvocation invocation)
        {
            try
            {
                ////执行原对象中的方法
                //invocation.Proceed();

                var method = invocation.MethodInvocationTarget ?? invocation.Method;
                //对当前方法的特性验证
                var qNoAttribute = method.GetCustomAttributes(true).FirstOrDefault(x => x.GetType() == typeof(InterceptorAttribute)) as NoInterceptorAttribute;
                if (qNoAttribute == null)
                {
                    if (invocation.ReturnValue is Task)
                    {
                        var task = invocation.ReturnValue as Task;
                        //var awaiter = task.GetAwaiter();
                        //awaiter.GetResult();
                        task.Wait();
                        var result = invocation.ReturnValue as dynamic;
                        if (result.Result != null)
                        {
                            WriteLogInfo(invocation, result.Result);
                        }
                    }
                    else
                    {
                        WriteLogInfo(invocation, invocation.ReturnValue);
                    }
                }
            }
            catch (Exception ex)
            {
                AbpLogHelper.Error(ex);
            }
        }
示例#2
0
 /// <summary>
 /// 写日志
 /// </summary>
 /// <param name="invocation"></param>
 /// <param name="result"></param>
 public void WriteLogInfo(IInvocation invocation, object result)
 {
     try
     {
         //接口方法名称
         string        methodName = $"{invocation.MethodInvocationTarget.DeclaringType.FullName}.{invocation.Method.Name}";
         StringBuilder builder    = new StringBuilder();
         var           context    = HttpContext.Current;
         builder.AppendFormat("【接口名】{0}", methodName);
         builder.AppendFormat("\r\n\r\n【IP地址】{0}", context == null ? string.Empty : context.Connection.RemoteIpAddress.ToString());
         builder.AppendFormat("\r\n\r\n【参数】{0}", JsonOperator.JsonSerialize(invocation.Arguments));
         builder.AppendFormat("\r\n\r\n【返回值】{0}", JsonOperator.JsonSerialize(result));//invocation.ReturnValue
         Logger.Error(builder.ToString());
     }
     catch (Exception ex)
     {
         AbpLogHelper.Error(ex);
     }
 }