log4upload.h 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. #ifndef RVC_VENDOR_LOG4UPLOAD_H_
  2. #define RVC_VENDOR_LOG4UPLOAD_H_
  3. #pragma once
  4. #include <stdint.h>
  5. #include "log4rvcother.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. int32_t sendThreadCount;
  46. int32_t logCountPerPackage;
  47. int32_t logBytesPerPackage;
  48. int32_t maxBufferBytes;
  49. int32_t connectTimeoutSec;
  50. int32_t sendTimeoutSec;
  51. int32_t destroyFlusherWaitTimeoutSec;
  52. int32_t destroySenderWaitTimeoutSec;
  53. int32_t compressType; // 0 no compress, 1 lz4
  54. int32_t ntpTimeOffset;
  55. int using_https; // 0 http, 1 https
  56. // for persistent feature
  57. int32_t usePersistent; // 0 no, 1 yes
  58. char* persistentFilePath;
  59. int32_t maxPersistentLogCount;
  60. int32_t usePersistentEncrypt; // 0 no, 1 yes
  61. char* PersistentEncryptPassword;
  62. int32_t debugMode;
  63. } ;
  64. struct log_producer_client
  65. {
  66. volatile int32_t valid_flag;
  67. int32_t log_level;
  68. void* private_data;
  69. } ;
  70. typedef int log_producer_result;
  71. typedef void(*pfn_on_log_producer_send_done)(log_producer_result, int, int, const char*, const char*, const unsigned char*, void*);
  72. #ifdef _WIN32
  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);
  94. typedef void(*pfn_log_producer_config_switch_debug_mode)(log_producer_config*, int32_t);
  95. #else
  96. using pfn_create_log_producer_config = log_producer_config*(*)();
  97. using pfn_log_producer_config_set_packet_log_bytes = void(*)(log_producer_config*, int32_t);
  98. using pfn_log_producer_config_set_packet_log_count = void(*)(log_producer_config*, int32_t);
  99. using pfn_log_producer_config_set_max_buffer_limit = void(*)(log_producer_config*, int64_t);
  100. using pfn_log_producer_config_set_send_thread_count = void(*)(log_producer_config*, int32_t);
  101. using pfn_log_producer_config_set_persistent_max_log_count = void(*)(log_producer_config*, int32_t);
  102. using pfn_log_producer_config_set_skyeye_servname = void(*)(log_producer_config*, char*);
  103. using pfn_log_producer_config_set_skyeye_cmptId = void(*)(log_producer_config*, char*);
  104. using pfn_log_producer_config_set_skyeye_cmptname = void(*)(log_producer_config*, char*);
  105. using pfn_log_producer_config_set_skyeye_version = void(*)(log_producer_config*, char*);
  106. using pfn_log_producer_config_set_persistent = void(*)(log_producer_config*, int32_t);
  107. using pfn_log_producer_config_set_skyeye_entityname = void(*)(log_producer_config*, char*);
  108. using pfn_log_producer_config_set_skyeye_item = void(*)(log_producer_config*, char*);
  109. using pfn_log_producer_config_set_persistent_file_path = void(*)(log_producer_config*, const char*);
  110. using pfn_log_producer_config_set_united_appname = void(*)(log_producer_config*, char*);
  111. using pfn_log_producer_config_set_united_version = void(*)(log_producer_config*, char*);
  112. using pfn_log_producer_config_set_united_needArchived = void(*)(log_producer_config*, int);
  113. using pfn_log_producer_config_set_united_deployUnitId = void(*)(log_producer_config*, char*);
  114. using pfn_log_producer_config_set_united_serviceUnitId = void(*)(log_producer_config*, char*);
  115. using pfn_create_log_producer_client = log_producer_client*(*)(log_producer_config*, pfn_on_log_producer_send_done, void*);
  116. using pfn_log_producer_client_add_log = log_producer_result(*)(log_producer_client*, log_item*, int);
  117. using pfn_log_producer_config_switch_debug_mode = void(*)(log_producer_config*, int32_t);
  118. #endif //_WIN32
  119. class upload_helper
  120. {
  121. public:
  122. upload_helper() :_initialized(false)
  123. , pinst_on_log_producer_send_done(nullptr)
  124. , pinst_create_log_producer_config(nullptr)
  125. , pinst_log_producer_config_set_packet_log_bytes(nullptr)
  126. , pinst_log_producer_config_set_packet_log_count(nullptr)
  127. , pinst_log_producer_config_set_max_buffer_limit(nullptr)
  128. , pinst_log_producer_config_set_send_thread_count(nullptr)
  129. , pinst_log_producer_config_set_persistent_max_log_count(nullptr)
  130. , pinst_log_producer_config_set_skyeye_servname(nullptr)
  131. , pinst_log_producer_config_set_skyeye_cmptId(nullptr)
  132. , pinst_log_producer_config_set_skyeye_cmptname(nullptr)
  133. , pinst_log_producer_config_set_skyeye_version(nullptr)
  134. , pinst_log_producer_config_set_persistent(nullptr)
  135. , pinst_log_producer_config_set_skyeye_entityname(nullptr)
  136. , pinst_log_producer_config_set_skyeye_item(nullptr)
  137. , pinst_log_producer_config_set_persistent_file_path(nullptr)
  138. , pinst_log_producer_config_set_united_appname(nullptr)
  139. , pinst_log_producer_config_set_united_version(nullptr)
  140. , pinst_log_producer_config_set_united_needArchived(nullptr)
  141. , pinst_log_producer_config_set_united_deployUnitId(nullptr)
  142. , pinst_log_producer_config_set_united_serviceUnitId(nullptr)
  143. , pinst_create_log_producer_client(nullptr)
  144. , pinst_log_producer_client_add_log(nullptr)
  145. , pinst_log_producer_config_switch_debug_mode(nullptr)
  146. , _client(nullptr)
  147. {
  148. }
  149. ~upload_helper() {
  150. unload_logsdk();
  151. }
  152. bool initialize(const cmb::log_init_config& config);
  153. bool is_initialized() const {
  154. return _initialized;
  155. }
  156. void unitialize() { if(is_initialized()) unload_logsdk(); }
  157. private:
  158. int load_logsdk();
  159. int unload_logsdk();
  160. public:
  161. pfn_log_producer_client_add_log pinst_log_producer_client_add_log;
  162. log_producer_client* _client;
  163. private:
  164. bool _initialized;
  165. log4vendor_lib_t m_lib;
  166. pfn_on_log_producer_send_done pinst_on_log_producer_send_done;
  167. pfn_create_log_producer_config pinst_create_log_producer_config;
  168. pfn_log_producer_config_set_packet_log_bytes pinst_log_producer_config_set_packet_log_bytes;
  169. pfn_log_producer_config_set_packet_log_count pinst_log_producer_config_set_packet_log_count;
  170. pfn_log_producer_config_set_max_buffer_limit pinst_log_producer_config_set_max_buffer_limit;
  171. pfn_log_producer_config_set_send_thread_count pinst_log_producer_config_set_send_thread_count;
  172. pfn_log_producer_config_set_persistent_max_log_count pinst_log_producer_config_set_persistent_max_log_count;
  173. pfn_log_producer_config_set_skyeye_servname pinst_log_producer_config_set_skyeye_servname;
  174. pfn_log_producer_config_set_skyeye_cmptId pinst_log_producer_config_set_skyeye_cmptId;
  175. pfn_log_producer_config_set_skyeye_cmptname pinst_log_producer_config_set_skyeye_cmptname;
  176. pfn_log_producer_config_set_skyeye_version pinst_log_producer_config_set_skyeye_version;
  177. pfn_log_producer_config_set_persistent pinst_log_producer_config_set_persistent;
  178. pfn_log_producer_config_set_skyeye_entityname pinst_log_producer_config_set_skyeye_entityname;
  179. pfn_log_producer_config_set_skyeye_item pinst_log_producer_config_set_skyeye_item;
  180. pfn_log_producer_config_set_persistent_file_path pinst_log_producer_config_set_persistent_file_path;
  181. pfn_log_producer_config_set_united_appname pinst_log_producer_config_set_united_appname;
  182. pfn_log_producer_config_set_united_version pinst_log_producer_config_set_united_version;
  183. pfn_log_producer_config_set_united_needArchived pinst_log_producer_config_set_united_needArchived;
  184. pfn_log_producer_config_set_united_deployUnitId pinst_log_producer_config_set_united_deployUnitId;
  185. pfn_log_producer_config_set_united_serviceUnitId pinst_log_producer_config_set_united_serviceUnitId;
  186. pfn_create_log_producer_client pinst_create_log_producer_client;
  187. pfn_log_producer_config_switch_debug_mode pinst_log_producer_config_switch_debug_mode;
  188. };
  189. #endif //RVC_VENDOR_LOG4UPLOAD_H_