log4upload.h 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. #ifndef RVC_VENDOR_LOG4UPLOAD_H_
  2. #define RVC_VENDOR_LOG4UPLOAD_H_
  3. #pragma once
  4. #include <stdint.h>
  5. #include "log4vendor.h"
  6. #include "log_define.h"
  7. #if defined(_MSC_VER)
  8. #include <Windows.h>
  9. typedef struct {
  10. HMODULE handle;
  11. char* errmsg;
  12. } log4vendor_lib_t;
  13. #else
  14. typedef struct
  15. {
  16. void* handle;
  17. char* errmsg;
  18. } log4vendor_lib_t;
  19. #endif
  20. struct log_producer_config
  21. {
  22. //守护上传:代替其他实体上传日志
  23. int enableGuarder;
  24. //天眼要求字段
  25. char* skyeyeServName;
  26. char* skyeyeCmptId;
  27. char* skyeyeCmptName;
  28. char* skyeyeTerminalNo;
  29. char* skyeyeVersion;
  30. char* skyeyeSn;
  31. char* skyeyeItem;
  32. char* skyeyeEntityName;
  33. //统一日志要求字段
  34. char* unitedAppName;
  35. char* unitedVersion;
  36. int unitedNeedArchived;
  37. char* unitedDeployUnitId;
  38. char* unitedServiceUnitId;
  39. char* endpoint;
  40. char* skyeye_user_topic;
  41. char* skyeye_sys_topic;
  42. char* beidou_topic;
  43. char* business_user_topic;
  44. char* business_sys_topic;
  45. char* vtmweb_topic;
  46. int32_t sendThreadCount;
  47. int32_t logCountPerPackage;
  48. int32_t logBytesPerPackage;
  49. int32_t maxBufferBytes;
  50. int32_t connectTimeoutSec;
  51. int32_t sendTimeoutSec;
  52. int32_t destroyFlusherWaitTimeoutSec;
  53. int32_t destroySenderWaitTimeoutSec;
  54. int32_t compressType; // 0 no compress, 1 lz4
  55. int32_t ntpTimeOffset;
  56. int using_https; // 0 http, 1 https
  57. // for persistent feature
  58. int32_t usePersistent; // 0 no, 1 yes
  59. char* persistentFilePath;
  60. int32_t maxPersistentLogCount;
  61. int32_t usePersistentEncrypt; // 0 no, 1 yes
  62. char* PersistentEncryptPassword;
  63. int32_t debugMode;
  64. } ;
  65. struct log_producer_client
  66. {
  67. volatile int32_t valid_flag;
  68. int32_t log_level;
  69. void* private_data;
  70. } ;
  71. typedef int log_producer_result;
  72. typedef void(*pfn_on_log_producer_send_done)(log_producer_result, int, int, const char*, const char*, const unsigned char*, void*);
  73. typedef log_producer_config* (*pfn_create_log_producer_config)();
  74. typedef void(*pfn_log_producer_config_set_packet_log_bytes)(log_producer_config*, int32_t);
  75. typedef void(*pfn_log_producer_config_set_packet_log_count)(log_producer_config*, int32_t);
  76. typedef void(*pfn_log_producer_config_set_max_buffer_limit)(log_producer_config*, int64_t);
  77. typedef void(*pfn_log_producer_config_set_send_thread_count)(log_producer_config*, int32_t);
  78. typedef void(*pfn_log_producer_config_set_persistent_max_log_count)(log_producer_config*, int32_t);
  79. typedef void(*pfn_log_producer_config_set_skyeye_servname)(log_producer_config*, char*);
  80. typedef void(*pfn_log_producer_config_set_skyeye_cmptId)(log_producer_config*, char*);
  81. typedef void(*pfn_log_producer_config_set_skyeye_cmptname)(log_producer_config*, char*);
  82. typedef void(*pfn_log_producer_config_set_skyeye_version)(log_producer_config*, char*);
  83. typedef void(*pfn_log_producer_config_set_persistent)(log_producer_config*, int32_t);
  84. typedef void(*pfn_log_producer_config_set_skyeye_entityname)(log_producer_config*, char*);
  85. typedef void(*pfn_log_producer_config_set_skyeye_item)(log_producer_config*, char*);
  86. typedef void(*pfn_log_producer_config_set_persistent_file_path)(log_producer_config*, const char*);
  87. typedef void(*pfn_log_producer_config_set_united_appname)(log_producer_config*, char*);
  88. typedef void(*pfn_log_producer_config_set_united_version)(log_producer_config*, char*);
  89. typedef void(*pfn_log_producer_config_set_united_needArchived)(log_producer_config*, int);
  90. typedef void(*pfn_log_producer_config_set_united_deployUnitId)(log_producer_config*, char*);
  91. typedef void(*pfn_log_producer_config_set_united_serviceUnitId)(log_producer_config*, char*);
  92. typedef log_producer_client* (*pfn_create_log_producer_client)(log_producer_config*, pfn_on_log_producer_send_done, void*);
  93. typedef log_producer_result(*pfn_log_producer_client_add_log)(log_producer_client*, log_item*, int, long);
  94. typedef void(*pfn_log_producer_config_switch_debug_mode)(log_producer_config*, int32_t);
  95. class upload_helper
  96. {
  97. public:
  98. upload_helper() :_initialized(false)
  99. , pinst_on_log_producer_send_done(nullptr)
  100. , pinst_create_log_producer_config(nullptr)
  101. , pinst_log_producer_config_set_packet_log_bytes(nullptr)
  102. , pinst_log_producer_config_set_packet_log_count(nullptr)
  103. , pinst_log_producer_config_set_max_buffer_limit(nullptr)
  104. , pinst_log_producer_config_set_send_thread_count(nullptr)
  105. , pinst_log_producer_config_set_persistent_max_log_count(nullptr)
  106. , pinst_log_producer_config_set_skyeye_servname(nullptr)
  107. , pinst_log_producer_config_set_skyeye_cmptId(nullptr)
  108. , pinst_log_producer_config_set_skyeye_cmptname(nullptr)
  109. , pinst_log_producer_config_set_skyeye_version(nullptr)
  110. , pinst_log_producer_config_set_persistent(nullptr)
  111. , pinst_log_producer_config_set_skyeye_entityname(nullptr)
  112. , pinst_log_producer_config_set_skyeye_item(nullptr)
  113. , pinst_log_producer_config_set_persistent_file_path(nullptr)
  114. , pinst_log_producer_config_set_united_appname(nullptr)
  115. , pinst_log_producer_config_set_united_version(nullptr)
  116. , pinst_log_producer_config_set_united_needArchived(nullptr)
  117. , pinst_log_producer_config_set_united_deployUnitId(nullptr)
  118. , pinst_log_producer_config_set_united_serviceUnitId(nullptr)
  119. , pinst_create_log_producer_client(nullptr)
  120. , pinst_log_producer_client_add_log(nullptr)
  121. , pinst_log_producer_config_switch_debug_mode(nullptr)
  122. , _client(nullptr)
  123. {
  124. }
  125. ~upload_helper() {
  126. unload_logsdk();
  127. }
  128. bool initialize(const cmb::log_init_config& config);
  129. bool is_initialized() const {
  130. return _initialized;
  131. }
  132. void unitialize() { if(is_initialized()) unload_logsdk(); }
  133. private:
  134. int load_logsdk();
  135. int unload_logsdk();
  136. public:
  137. pfn_log_producer_client_add_log pinst_log_producer_client_add_log;
  138. log_producer_client* _client;
  139. private:
  140. bool _initialized;
  141. log4vendor_lib_t m_lib;
  142. pfn_on_log_producer_send_done pinst_on_log_producer_send_done;
  143. pfn_create_log_producer_config pinst_create_log_producer_config;
  144. pfn_log_producer_config_set_packet_log_bytes pinst_log_producer_config_set_packet_log_bytes;
  145. pfn_log_producer_config_set_packet_log_count pinst_log_producer_config_set_packet_log_count;
  146. pfn_log_producer_config_set_max_buffer_limit pinst_log_producer_config_set_max_buffer_limit;
  147. pfn_log_producer_config_set_send_thread_count pinst_log_producer_config_set_send_thread_count;
  148. pfn_log_producer_config_set_persistent_max_log_count pinst_log_producer_config_set_persistent_max_log_count;
  149. pfn_log_producer_config_set_skyeye_servname pinst_log_producer_config_set_skyeye_servname;
  150. pfn_log_producer_config_set_skyeye_cmptId pinst_log_producer_config_set_skyeye_cmptId;
  151. pfn_log_producer_config_set_skyeye_cmptname pinst_log_producer_config_set_skyeye_cmptname;
  152. pfn_log_producer_config_set_skyeye_version pinst_log_producer_config_set_skyeye_version;
  153. pfn_log_producer_config_set_persistent pinst_log_producer_config_set_persistent;
  154. pfn_log_producer_config_set_skyeye_entityname pinst_log_producer_config_set_skyeye_entityname;
  155. pfn_log_producer_config_set_skyeye_item pinst_log_producer_config_set_skyeye_item;
  156. pfn_log_producer_config_set_persistent_file_path pinst_log_producer_config_set_persistent_file_path;
  157. pfn_log_producer_config_set_united_appname pinst_log_producer_config_set_united_appname;
  158. pfn_log_producer_config_set_united_version pinst_log_producer_config_set_united_version;
  159. pfn_log_producer_config_set_united_needArchived pinst_log_producer_config_set_united_needArchived;
  160. pfn_log_producer_config_set_united_deployUnitId pinst_log_producer_config_set_united_deployUnitId;
  161. pfn_log_producer_config_set_united_serviceUnitId pinst_log_producer_config_set_united_serviceUnitId;
  162. pfn_create_log_producer_client pinst_create_log_producer_client;
  163. pfn_log_producer_config_switch_debug_mode pinst_log_producer_config_switch_debug_mode;
  164. };
  165. #endif //RVC_VENDOR_LOG4UPLOAD_H_