HeaderRecordService.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using Azure.Core;
  2. using HeaderRecord;
  3. using Microsoft.AspNetCore.Builder;
  4. using Microsoft.AspNetCore.Http;
  5. using Microsoft.Extensions.DependencyInjection;
  6. using Microsoft.Extensions.Logging;
  7. using Newtonsoft.Json;
  8. using System.Net.Http;
  9. namespace EVCB_OCPP.Service
  10. {
  11. public static partial class AppExtention
  12. {
  13. public static void AddHeaderRecordService(this IServiceCollection services)
  14. {
  15. services.AddTransient<HeaderRecordService>();
  16. }
  17. public static void UseHeaderRecordService(this WebApplication webApplication)
  18. {
  19. webApplication.Use(async (context, next) =>
  20. {
  21. var servcie = context.RequestServices.GetService<HeaderRecordService>();
  22. servcie.LogRequest(context.TraceIdentifier, context.Request);
  23. await next(context);
  24. servcie.LogResponse(context.TraceIdentifier, context.Response);
  25. return;
  26. });
  27. }
  28. }
  29. }
  30. namespace HeaderRecord
  31. {
  32. public class HeaderRecordService
  33. {
  34. private readonly ILogger<HeaderRecordService> logger;
  35. public HeaderRecordService(ILogger<HeaderRecordService> logger)
  36. {
  37. this.logger = logger;
  38. }
  39. internal void LogRequest(string traceIdentifier, HttpRequest request)
  40. {
  41. logger.LogInformation("LogRequest============================================================");
  42. logger.LogInformation("{id} {method} {path} {protocol}", traceIdentifier, request.Method, request.Path, request.Protocol);
  43. logger.LogInformation("{id} Headers {headers}", traceIdentifier, JsonConvert.SerializeObject(request.Headers));
  44. //foreach (var headerKey in request.Headers.Keys)
  45. //{
  46. // logger.LogInformation("{id} {key} {value}", traceIdentifier, headerKey, request.Headers[headerKey]);
  47. //}
  48. logger.LogInformation("LogRequest============================================================");
  49. }
  50. internal void LogResponse(string traceIdentifier, HttpResponse response)
  51. {
  52. logger.LogInformation("LogResponse============================================================");
  53. logger.LogInformation("{id} {key} {value}", traceIdentifier, "statuscode", response.StatusCode);
  54. foreach (var headerKey in response.Headers.Keys)
  55. {
  56. logger.LogInformation("{id} {key} {value}", traceIdentifier, headerKey, response.Headers[headerKey]);
  57. }
  58. logger.LogInformation("LogResponse============================================================");
  59. }
  60. }
  61. }