Ejemplo n.º 1
0
        public override async Task <WriteReply> WriteRequest(RequestInfoPack request, ServerCallContext context)
        {
            foreach (var item in request.Data)
            {
                var info = new Core.Models.RequestInfo {
                    Id            = item.RequestInfo.Id,
                    Service       = item.RequestInfo.Service,
                    Instance      = item.RequestInfo.Instance,
                    CreateTime    = new System.DateTime(item.RequestInfo.CreateTimeStamp),
                    LoginUser     = item.RequestInfo.LoginUser,
                    Method        = item.RequestInfo.Method,
                    Milliseconds  = item.RequestInfo.Milliseconds,
                    ParentId      = item.RequestInfo.ParentId,
                    ParentService = item.RequestInfo.ParentService,
                    RemoteIP      = item.RequestInfo.RemoteIP,
                    RequestType   = item.RequestInfo.RequestType,
                    Route         = item.RequestInfo.Route,
                    StatusCode    = item.RequestInfo.StatusCode,
                    Url           = item.RequestInfo.Url
                };

                var detail = new Core.Models.RequestDetail {
                    Id           = item.RequestDetail.Id,
                    RequestId    = item.RequestDetail.RequestId,
                    Cookie       = item.RequestDetail.Cookie,
                    CreateTime   = new System.DateTime(item.RequestDetail.CreateTimeStamp),
                    ErrorMessage = item.RequestDetail.ErrorMessage,
                    ErrorStack   = item.RequestDetail.ErrorStack,
                    Header       = item.RequestDetail.Header,
                    QueryString  = item.RequestDetail.QueryString,
                    RequestBody  = item.RequestDetail.RequestBody,
                    ResponseBody = item.RequestDetail.ResponseBody,
                    Scheme       = item.RequestDetail.Scheme
                };

                RequestBag bag = new RequestBag(info, detail);

                await _storage.AddRequestInfoAsync(bag);
            }

            return(new WriteReply()
            {
                Code = 0
            });
        }
        private async Task Save(string Body, string TransportType)
        {
            if (TransportType == typeof(RequestBag).Name)
            {
                try
                {
                    var package = System.Text.Json.JsonSerializer.Deserialize <List <RequestBag> >(Body, _jsonSetting);

                    if (package != null && package.Any())
                    {
                        foreach (var item in package)
                        {
                            await _storage.AddRequestInfoAsync(item);
                        }
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogWarning("Collector Failed:" + ex.Message);
                }
            }

            if (TransportType == typeof(Performance).Name)
            {
                try
                {
                    var package = System.Text.Json.JsonSerializer.Deserialize <Performance>(Body, _jsonSetting);

                    await _storage.AddPerformanceAsync(package);
                }
                catch (Exception ex)
                {
                    _logger.LogWarning("Collector Failed:" + ex.Message);
                }
            }
        }