123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #ifndef RVC_VENDOR_LOG4LINK_H_
- #define RVC_VENDOR_LOG4LINK_H_
- #include <string>
- #include "log4upload.h"
- typedef enum
- {
- VENDORLOG_TYPE_SYSTEM = 0/*系统日志*/,
- VENDORLOG_TYPE_USER = 1/*用户日志*/,
- VENDORLOG_TYPE_BUSINESS_SYSTEM = 2,
- VENDORLOG_TYPE_BUSINESS_USER = 3
- } VENDORLOG_TYPE_E;
- typedef enum
- {
- VENDORLOG_LEVEL_DEBUG = 0,
- VENDORLOG_LEVEL_INFO = 1,
- VENDORLOG_LEVEL_WARN = 2,
- VENDORLOG_LEVEL_ERROR = 3,
- VENDORLOG_LEVEL_FATAL = 4
- } VENDORLOG_LEVEL_E;
- typedef int vendorlog_producer_result;
- class log_link_private
- {
- public:
- VENDORLOG_LEVEL_E level;
- VENDORLOG_TYPE_E type;
- std::string result_code;
- std::string trace_id;
- std::string result_msg;
- std::string log_code;
- std::string apii;
- long begin_time;
- long end_time;
- long cost_time;
- std::string business_id;
- std::string tip_msg;
- std::string src_type;
- void* log_producer;
- bool do_log;
- log_link_private(VENDORLOG_LEVEL_E t_level, VENDORLOG_TYPE_E t_type)
- : level(t_level), type(t_type)
- , result_code("SUC0000"),trace_id(""), result_msg(""), log_code(""), apii("")
- , begin_time(0), end_time(0), cost_time(0)
- , business_id(""), tip_msg(""), src_type(""), log_producer(nullptr), do_log(true)
- {
- }
- bool IsAllowToRecord()
- {
- return (this->level >= VENDORLOG_LEVEL_INFO);
- }
- };
- class log_link
- {
- public:
- log_link(VENDORLOG_LEVEL_E t_level, VENDORLOG_TYPE_E t_type);
- ~log_link();
- //用户、系统日志均必填,交易处理结果代码,0表示处理成功,其他表示失败,可为系统本身的错误码,也可为后台系统返回的错误码
- log_link& result_code(std::string value);
- //用户、系统日志均必填,业务跟踪ID, 32字节长度的字符串,唯一识别每笔请求
- log_link& trace_id(std::string value);
- //用户、系统日志LOG_LEVEL_WARN以上必填
- //交易处理结果信息,包括成功与失败信息,可为系统本身的成功/失败信息,也可为后台系统返回的成功/失败信息.
- log_link& result_msg(std::string value);
- //用户日志必填,日志码
- //终端中标识各个交易如读卡、读取身份证等。如果终端由于客观原因无法识别交易场景,则可字段由上游传入。
- log_link& log_code(std::string value);
- log_link& api(std::string value);//用户日志必填,请求路径/接口名称.
- log_link& business_id(std::string value);//用户日志必填,请求业务ID
- log_link& tip_msg(std::string value);//用户日志LOG_LEVEL_WARN以上必填,直接向客户展示的报错信息.
- log_link& src_type(std::string value);//系统日志LOG_LEVEL_FATAL必填,异常来源类型
- log_link& begin_time(long value);//用户日志必填, 请求发送/接收时间
- log_link& end_time(long value);//用户日志必填, 响应接收 / 应答时间
- log_link& cost_time(long value);//消耗时间,自定义字段,单位ms
- log_link& log_producer(void* producer);
- log_link& with_extend_log_or_not(bool value);//是否log到文件中,并行阶段需要log到文件
- void operator () () const;
- void fetch_log_item(log_item& log);
- private:
- log_link_private* const m_private;
- private:
- log_link(const log_link&) : m_private(nullptr) {};
- const log_link& operator=(const log_link&) { return *this; };
- };
- #endif //RVC_VENDOR_LOG4LINK_H_
|