log4link.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef RVC_VENDOR_LOG4LINK_H_
  2. #define RVC_VENDOR_LOG4LINK_H_
  3. #include <string>
  4. #include "log4upload.h"
  5. typedef enum
  6. {
  7. VENDORLOG_TYPE_SYSTEM = 0/*系统日志*/,
  8. VENDORLOG_TYPE_USER = 1/*用户日志*/,
  9. VENDORLOG_TYPE_BUSINESS_SYSTEM = 2,
  10. VENDORLOG_TYPE_BUSINESS_USER = 3
  11. } VENDORLOG_TYPE_E;
  12. typedef enum
  13. {
  14. VENDORLOG_LEVEL_DEBUG = 0,
  15. VENDORLOG_LEVEL_INFO = 1,
  16. VENDORLOG_LEVEL_WARN = 2,
  17. VENDORLOG_LEVEL_ERROR = 3,
  18. VENDORLOG_LEVEL_FATAL = 4
  19. } VENDORLOG_LEVEL_E;
  20. typedef int vendorlog_producer_result;
  21. class log_link_private
  22. {
  23. public:
  24. VENDORLOG_LEVEL_E level;
  25. VENDORLOG_TYPE_E type;
  26. std::string result_code;
  27. std::string trace_id;
  28. std::string result_msg;
  29. std::string log_code;
  30. std::string apii;
  31. long begin_time;
  32. long end_time;
  33. long cost_time;
  34. std::string business_id;
  35. std::string tip_msg;
  36. std::string src_type;
  37. void* log_producer;
  38. bool do_log;
  39. log_link_private(VENDORLOG_LEVEL_E t_level, VENDORLOG_TYPE_E t_type)
  40. : level(t_level), type(t_type)
  41. , result_code("SUC0000"),trace_id(""), result_msg(""), log_code(""), apii("")
  42. , begin_time(0), end_time(0), cost_time(0)
  43. , business_id(""), tip_msg(""), src_type(""), log_producer(nullptr), do_log(true)
  44. {
  45. }
  46. bool IsAllowToRecord()
  47. {
  48. return (this->level >= VENDORLOG_LEVEL_INFO);
  49. }
  50. };
  51. class log_link
  52. {
  53. public:
  54. log_link(VENDORLOG_LEVEL_E t_level, VENDORLOG_TYPE_E t_type);
  55. ~log_link();
  56. //用户、系统日志均必填,交易处理结果代码,0表示处理成功,其他表示失败,可为系统本身的错误码,也可为后台系统返回的错误码
  57. log_link& result_code(std::string value);
  58. //用户、系统日志均必填,业务跟踪ID, 32字节长度的字符串,唯一识别每笔请求
  59. log_link& trace_id(std::string value);
  60. //用户、系统日志LOG_LEVEL_WARN以上必填
  61. //交易处理结果信息,包括成功与失败信息,可为系统本身的成功/失败信息,也可为后台系统返回的成功/失败信息.
  62. log_link& result_msg(std::string value);
  63. //用户日志必填,日志码
  64. //终端中标识各个交易如读卡、读取身份证等。如果终端由于客观原因无法识别交易场景,则可字段由上游传入。
  65. log_link& log_code(std::string value);
  66. log_link& api(std::string value);//用户日志必填,请求路径/接口名称.
  67. log_link& business_id(std::string value);//用户日志必填,请求业务ID
  68. log_link& tip_msg(std::string value);//用户日志LOG_LEVEL_WARN以上必填,直接向客户展示的报错信息.
  69. log_link& src_type(std::string value);//系统日志LOG_LEVEL_FATAL必填,异常来源类型
  70. log_link& begin_time(long value);//用户日志必填, 请求发送/接收时间
  71. log_link& end_time(long value);//用户日志必填, 响应接收 / 应答时间
  72. log_link& cost_time(long value);//消耗时间,自定义字段,单位ms
  73. log_link& log_producer(void* producer);
  74. log_link& with_extend_log_or_not(bool value);//是否log到文件中,并行阶段需要log到文件
  75. void operator () () const;
  76. void fetch_log_item(log_item& log);
  77. private:
  78. log_link_private* const m_private;
  79. private:
  80. log_link(const log_link&) : m_private(nullptr) {};
  81. const log_link& operator=(const log_link&) { return *this; };
  82. };
  83. #endif //RVC_VENDOR_LOG4LINK_H_