Example #1
0
 public void LogRequest(RequestToLog requestToLog, ResponseToLog responseToLog, double durationMs)
 {
     Console.WriteLine(string.Format("Request completed in {0} ms, Request: {1}, Response: {2}",
                                     durationMs,
                                     JsonConvert.SerializeObject(requestToLog, Formatting.Indented),
                                     JsonConvert.SerializeObject(responseToLog, Formatting.Indented)));
 }
Example #2
0
        /// <summary>
        /// Logs the request sent to server and corresponding response
        /// </summary>
        /// <param name="request"></param>
        /// <param name="response"></param>
        /// <param name="durationMs"></param>
        private void LogRequest(IRestRequest request, IRestResponse response, double durationMs)
        {
            var requestToLog = new RequestToLog
            {
                resource = request.Resource,
                // Parameters are custom anonymous objects in order to have the parameter type as a nice string
                // otherwise it will just show the enum value
                parameters = request.Parameters.Select(parameter => new RequestParameter
                {
                    name  = parameter.Name,
                    value = parameter.Value,
                    type  = parameter.Type.ToString()
                }),
                // ToString() here to have the method as a nice string otherwise it will just show the enum value
                method = request.Method.ToString(),
                // This will generate the actual Uri used in the request
                uri = restClient.BuildUri(request)
            };

            var responseToLog = new ResponseToLog
            {
                statusCode = response.StatusCode,
                content    = response.Content,
                headers    = response.Headers,
                // The Uri that actually responded (could be different from the requestUri if a redirection occurred)
                responseUri  = response.ResponseUri,
                errorMessage = response.ErrorMessage,
                durationMs   = durationMs
            };

            this.logger.LogRequest(requestToLog, responseToLog, durationMs);
        }
Example #3
0
    /// <summary>
    ///     Logs the request sent to server and corresponding response
    /// </summary>
    /// <param name="request"></param>
    /// <param name="response"></param>
    /// <param name="durationMs"></param>
    private void LogRequest(HttpRequestMessage request, ResponseResult response, double durationMs)
    {
        var requestToLog = new RequestToLog
        {
            resource = request.RequestUri.PathAndQuery,
            // Parameters are custom anonymous objects in order to have the parameter type as a nice string
            // otherwise it will just show the enum value
            parameters = request.Headers.Select(parameter => new RequestParameter
            {
                name  = parameter.Key,
                value = parameter.Value,
                type  = parameter.GetType().ToString()
            }),
            // ToString() here to have the method as a nice string otherwise it will just show the enum value
            method = request.Method.ToString(),
            // This will generate the actual Uri used in the request
            uri = request.RequestUri
        };

        var responseToLog = new ResponseToLog
        {
            statusCode = response.StatusCode,
            content    = response.Content,
            headers    = response.Headers.ToDictionary(o => o.Key, o => string.Join(Environment.NewLine, o.Value)),
            // The Uri that actually responded (could be different from the requestUri if a redirection occurred)
            responseUri  = response.Request.RequestUri,
            errorMessage = response.ErrorMessage,
            durationMs   = durationMs
        };

        logger.LogRequest(requestToLog, responseToLog, durationMs);
    }
Example #4
0
            public void LogRequest(RequestToLog requestToLog, ResponseToLog responseToLog, double durationMs)
            {
                if (!this.logger.IsEnabled(LogLevel.Trace))
                {
                    return;
                }

                var msg = new StringBuilder();

                msg.AppendFormat("{0}ms\n", durationMs);
                msg.AppendFormat("--> {0} {1} : {2}\n", requestToLog.method, requestToLog.uri, requestToLog.resource);
                foreach (var param in requestToLog.parameters)
                {
                    msg.AppendFormat("    {0}: {1}\n", param.name, param.value);
                }

                msg.AppendFormat("<-- {0}\n", responseToLog.statusCode);
                foreach (var header in responseToLog.headers)
                {
                    msg.AppendFormat("    {0}: {1}\n", header.Name, header.Value);
                }
                msg.AppendLine();
                if (responseToLog.errorMessage != null && responseToLog.errorMessage != "")
                {
                    msg.AppendFormat("Err: {0}", responseToLog.errorMessage);
                }
                else
                {
                    msg.Append(responseToLog.content);
                }


                this.logger.LogTrace(msg.ToString());
            }
        public void LogRequest(RequestToLog requestToLog, ResponseToLog responseToLog, double durationMs)
        {
            var sb = new StringBuilder("Request completed in ");

            sb.Append(durationMs);
            sb.AppendLine(" ms");

            sb.AppendLine();
            sb.AppendLine("- - - - - - - - - - BEGIN REQUEST - - - - - - - - - -");
            sb.AppendLine();
            sb.Append(requestToLog.method);
            sb.Append(' ');
            sb.Append(requestToLog.uri.ToString());
            sb.AppendLine(" HTTP/1.1");

            var requestHeaders = requestToLog.parameters;

            requestHeaders = requestHeaders.OrderByDescending(p => p.name == "Host");

            foreach (var item in requestHeaders)
            {
                sb.Append(item.name);
                sb.Append(": ");
                sb.AppendLine(item.value.ToString());
            }

            sb.AppendLine();
            sb.AppendLine();

            sb.AppendLine("- - - - - - - - - - END REQUEST - - - - - - - - - -");
            sb.AppendLine();

            sb.AppendLine("- - - - - - - - - - BEGIN RESPONSE - - - - - - - - - -");
            sb.AppendLine();

            sb.Append("HTTP/1.1 ");
            sb.Append((int)responseToLog.statusCode);
            sb.Append(' ');
            sb.AppendLine(responseToLog.statusCode.ToString());

            var responseHeaders = responseToLog.headers;

            foreach (var item in responseHeaders)
            {
                sb.Append(item.Name);
                sb.Append(": ");
                sb.AppendLine(item.Value.ToString());
            }

            sb.AppendLine();
            sb.AppendLine();

            sb.AppendLine(responseToLog.content);
            sb.AppendLine(responseToLog.errorMessage);

            sb.AppendLine("- - - - - - - - - - END RESPONSE - - - - - - - - - -");

            Console.Out.WriteLine(sb.ToString());
        }
        public void LogRequest(RequestToLog requestToLog, ResponseToLog responseToLog, double durationMs)
        {
            var sb = new StringBuilder();

            sb.AppendLine("My logger says:");
            sb.Append("statusCode: ");
            sb.AppendLine(responseToLog.statusCode.ToString());
            sb.AppendLine();

            sb.AppendLine("Response: ");
            sb.Append(responseToLog.content);

            Console.WriteLine(sb.ToString());
        }
Example #7
0
 public void LogRequest(RequestToLog requestToLog, ResponseToLog responseToLog, double durationMs)
 {
     if (responseToLog.statusCode == HttpStatusCode.OK)
     {
         foreach (var header in requestToLog.parameters)
         {
             if (!string.Equals(header.name, "partNumber"))
             {
                 continue;
             }
             if (header.value == null)
             {
                 continue;
             }
             int.TryParse(header.value.ToString(), out var partNumber); //minio遇到上传文件大于5MB时,会进行分块传输,这里就是当前块的编号(递增)
             Messenger.Default.Send(partNumber, "process");             //发送给主界面计算上传进度
             break;
         }
     }
 }