MonitorModel.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections.Concurrent;
  4. namespace Grpc.Extension.Abstract.Model
  5. {
  6. /// <summary>
  7. /// 日志监控实体
  8. /// </summary>
  9. [Serializable]
  10. public class MonitorModel
  11. {
  12. /// <summary>
  13. /// MonitorModel
  14. /// </summary>
  15. public MonitorModel()
  16. {
  17. RequestId = Guid.NewGuid().ToString();
  18. RequestTime = DateTime.Now;
  19. }
  20. /// <summary>
  21. /// 请求Id
  22. /// </summary>
  23. public string RequestId { get; set; }
  24. /// <summary>
  25. /// 客户端Ip
  26. /// </summary>
  27. public string ClientIp { get; set; }
  28. /// <summary>
  29. /// 请求时间
  30. /// </summary>
  31. public DateTime RequestTime { get; set; }
  32. /// <summary>
  33. /// 请求Url
  34. /// </summary>
  35. public string RequestUrl { get; set; }
  36. /// <summary>
  37. /// 请求参数
  38. /// </summary>
  39. public string RequestData { get; set; }
  40. /// <summary>
  41. /// 请求头
  42. /// </summary>
  43. public Dictionary<string, string> RequestHeaders { get; set; }
  44. /// <summary>
  45. /// 多层调用的追踪id
  46. /// </summary>
  47. public string TraceId { get; set; }
  48. /// <summary>
  49. /// ok | error
  50. /// </summary>
  51. public string Status { get; set; }
  52. /// <summary>
  53. /// 响应时间
  54. /// </summary>
  55. public DateTime ResponseTime { get; set; }
  56. /// <summary>
  57. /// 响应数据
  58. /// </summary>
  59. public string ResponseData { get; set; }
  60. /// <summary>
  61. /// 异常信息
  62. /// </summary>
  63. public string Exception { get; set; }
  64. /// <summary>
  65. /// 总耗时
  66. /// </summary>
  67. public double TotalElapsed => (ResponseTime - RequestTime).TotalMilliseconds;
  68. /// <summary>
  69. /// 访问上下信息的预留属性
  70. /// </summary>
  71. public ConcurrentDictionary<string, object> Items { get; set; } = new ConcurrentDictionary<string, object>();
  72. }
  73. }