You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.8 KiB
C#

8 months ago
using EntrustSettle.Common.Helper;
using Microsoft.Extensions.Logging;
//using NLog;
using RestSharp;
using System;
using System.Linq;
namespace EntrustSettle.Common
{
public static class RestSharpLogHelper
{
public static void LogRestSharp(this ILogger logger, string title, IRestClient client, RestRequest request, RestResponse response)
{
var requestToLog = new
{
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
{
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 = client.BuildUri(request),
};
var responseToLog = new
{
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,
};
logger.LogInformation($"Http请求目标{title}{Environment.NewLine}Request:{{Request}}{Environment.NewLine}Response:{{Response}}", JsonHelper.ObjToJson(requestToLog), JsonHelper.ObjToJson(responseToLog));
}
}
}