コード例 #1
0
        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="level"></param>
        /// <param name="operationName"></param>
        /// <param name="des"></param>
        /// <param name="url"></param>
        /// <param name="result"></param>
        /// <param name="cost"></param>
        /// <param name="exp"></param>
        /// <param name="method"></param>
        /// <param name="mode"></param>
        /// <param name="params"></param>
        public APILog(int level, string operationName, string des, string url, string result, int cost, Exception exp, string method, string mode, params object[] @params)
        {
            UniqueID    = IdWorker.GetId().ToString();
            Level       = level;
            Created     = DateTimeHelper.Now;
            OperateName = string.IsNullOrEmpty(operationName) ? "被调用日志" : operationName;
            Description = des;

            Url    = GetUrlWithoutQuery(url);
            Method = string.IsNullOrEmpty(method) ? "GET" : method;
            Mode   = string.IsNullOrEmpty(mode) ? "Passive" : mode;
            Result = result;
            Cost   = cost;
            StringBuilder json = new StringBuilder();

            if (@params != null && @params.Any())
            {
                foreach (var param in @params)
                {
                    if (param == @params.First())
                    {
                        json.Append(SerializeHelper.Serialize(param));
                    }
                    else
                    {
                        json.Append($",{SerializeHelper.Serialize(param)}");
                    }
                }
            }
            Params       = json.ToString();
            Exception    = exp;
            ExceptionMsg = exp?.Message;
            FromIP       = IPHelper.GetLocalIp();
        }
コード例 #2
0
ファイル: LogHelper.cs プロジェクト: tangyiyong/SAEA
        public static void Debug(string des, params object[] @params)
        {
            string paramStr = string.Empty;

            if (@params != null && @params.Any())
            {
                paramStr = SerializeHelper.Serialize(@params);
            }
            Write($"[Debug]", $"{des}\tparams:{paramStr}");
        }
コード例 #3
0
ファイル: LogHelper.cs プロジェクト: tangyiyong/SAEA
        public static void Warn(string des, Exception ex, params object[] @params)
        {
            string paramStr = string.Empty;

            if (@params != null && @params.Any())
            {
                paramStr = SerializeHelper.Serialize(@params);
            }
            Write($"[Warn]", $"{des}\terr:{SerializeHelper.Serialize(ex)},params:{paramStr}");
        }
コード例 #4
0
ファイル: ApiHelper.cs プロジェクト: zouhunter/SAEA
        /// <summary>
        /// 发送实体到服务器并返回实体
        /// </summary>
        /// <typeparam name="T1"></typeparam>
        /// <typeparam name="T2"></typeparam>
        /// <param name="url"></param>
        /// <param name="t"></param>
        /// <returns></returns>
        public static T2 Post <T1, T2>(string url, T1 t)
        {
            var json = Post(url, SerializeHelper.Serialize(t));

            if (string.IsNullOrEmpty(json))
            {
                return(default(T2));
            }
            return(SerializeHelper.Deserialize <T2>(json));
        }
コード例 #5
0
ファイル: LogHelper.cs プロジェクト: heringlee/SAEA
        public static void Error(string des, Exception ex, params object[] @params)
        {
            string paramStr = string.Empty;

            if (@params != null && @params.Any())
            {
                paramStr = SerializeHelper.Serialize(@params);
            }
            Write($"[Error]\t{des}", $"err:{ex.Message},params:{paramStr}");
        }
コード例 #6
0
        public void Write(T t)
        {
            if (t != null)
            {
                var json = SerializeHelper.Serialize(t);

                using (var fs = File.Open(_filePath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
                {
                    var data = Encoding.UTF8.GetBytes(json);

                    fs.Write(data, 0, data.Length);
                }
            }
        }
コード例 #7
0
        /// <summary>
        /// post请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="postModel"></param>
        /// <param name="headers"></param>
        /// <param name="timeOut"></param>
        /// <returns></returns>
        public static async Task <T> PostViewModelAsync <T>(string url, object postModel, Dictionary <string, string> headers = null, int timeOut = 30 * 1000)
        {
            var postData = SerializeHelper.Serialize(postModel);

            if (headers == null)
            {
                headers = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);
            }

            if (!headers.ContainsKey("Content-Type"))
            {
                headers.Add("Content-Type", "application/json; charset=UTF-8");
            }

            var json = await PostJsonAsync(url, postData, headers, timeOut);

            if (string.IsNullOrEmpty(json))
            {
                return(default(T));
            }
            return(SerializeHelper.Deserialize <T>(json));
        }
コード例 #8
0
ファイル: ApiHelper.cs プロジェクト: zouhunter/SAEA
        /// <summary>
        /// 外部请求跟踪日志方法
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="get"></param>
        /// <param name="func"></param>
        /// <param name="params"></param>
        /// <returns>logcom 第一个参数为url,最后一个参数是返回值</returns>
        public static T TackingLog <T>(bool get, Func <T> func, params object[] @params)
        {
            if (@params == null)
            {
                return(default(T));
            }

            var list = new List <object>();

            list.AddRange(@params);

            try
            {
                StackTrace st = new StackTrace();

                var sfs = st.GetFrames();

                for (int i = 1; i < sfs.Length; ++i)
                {
                    if (StackFrame.OFFSET_UNKNOWN == sfs[i].GetILOffset())
                    {
                        break;
                    }

                    var methodName = sfs[i].GetMethod().Name;

                    var fullName = sfs[i].GetFileName() + "()->" + methodName;

                    list.Add(fullName);
                }
            }
            catch { }

            T result = default(T);

            var mil = 0L;

            Stopwatch stopwatch = Stopwatch.StartNew();

            try
            {
                result = func.Invoke();
                mil    = stopwatch.ElapsedMilliseconds;
                list.Add("cost:" + mil);
                list.Add(mil);
                list.Add(result);
            }
            catch (Exception ex)
            {
                mil = stopwatch.ElapsedMilliseconds;
                list.Add("cost:" + mil);
                list.Add(mil);
                list.Add("err:" + ex.Message);

                if (ex.Message.IndexOf("操作超时") > -1 || ex.Message.IndexOf("Timeout") > -1)
                {
                    OnLogged?.Invoke(new APILog(level: 2,
                                                operationName: "调用五秒超时日志",
                                                des: get ? "ApiHelper.Get" : "ApiHelper.Post",
                                                url: @params[0].ToString(),
                                                result: "",
                                                cost: (int)mil,
                                                method: (get ? "GET" : "POST"),
                                                mode: "Active",
                                                exp: ex,
                                                @params: list.ToArray()));
                }
                else
                {
                    OnLogged?.Invoke(new APILog(level: 3,
                                                operationName: "调用异常日志",
                                                des: get ? "ApiHelper.Get" : "ApiHelper.Post",
                                                url: @params[0].ToString(),
                                                result: "",
                                                cost: (int)mil,
                                                method: (get ? "GET" : "POST"),
                                                mode: "Active",
                                                exp: ex,
                                                @params: list.ToArray()));
                }
            }
            finally
            {
                OnLogged?.Invoke(new APILog(level: 0,
                                            operationName: "调用日志",
                                            des: get ? "ApiHelper.Get" : "ApiHelper.Post",
                                            url: @params[0].ToString(),
                                            result: SerializeHelper.Serialize(result),
                                            cost: (int)mil,
                                            method: (get ? "GET" : "POST"),
                                            mode: "Active",
                                            exp: null,
                                            @params: list.ToArray()));

                stopwatch.Stop();
            }
            return(result);
        }
コード例 #9
0
ファイル: ApiHelper.cs プロジェクト: zouhunter/SAEA
 /// <summary>
 /// 将实体发送给远程服务器
 /// 发送json
 /// </summary>
 /// <param name="url"></param>
 /// <param name="obj"></param>
 /// <returns></returns>
 public static string Post(string url, Object obj)
 {
     return(Post(url, SerializeHelper.Serialize(obj)));
 }