|
@@ -5,6 +5,7 @@
|
|
|
#include "cJSON.h"
|
|
|
#include <stdlib.h>
|
|
|
#include "inner_log.h"
|
|
|
+#include <lz4.h>
|
|
|
|
|
|
/**
|
|
|
* adjust buffer, this function will ensure tag's buffer size >= tag->now_buffer_len + new_len
|
|
@@ -107,8 +108,6 @@ int add_beidou_log(log_group_builder* bder, beidou_log_item* log) {
|
|
|
|
|
|
|
|
|
*/
|
|
|
-
|
|
|
- //统一日志
|
|
|
{
|
|
|
|
|
|
cJSON_AddItemToObject(united_content, "businessId", cJSON_CreateString(log->BussID));
|
|
@@ -116,8 +115,15 @@ int add_beidou_log(log_group_builder* bder, beidou_log_item* log) {
|
|
|
cJSON_AddItemToObject(united_content, "parentSpanId", cJSON_CreateString(log->ParentSpanId));
|
|
|
cJSON_AddItemToObject(united_content, "spanId", cJSON_CreateString(log->SpanId));
|
|
|
cJSON_AddItemToObject(united_content, "timestamp", cJSON_CreateString(nowTime));
|
|
|
- cJSON_AddItemToObject(united_content, "deployUnitId", cJSON_CreateString(bder->config->unitedDeployUnitId));
|
|
|
- cJSON_AddItemToObject(united_content, "serviceUnitId", cJSON_CreateString(bder->config->unitedServiceUnitId));
|
|
|
+ if(log->deployUnitId != NULL)
|
|
|
+ cJSON_AddItemToObject(united_content, "deployUnitId", cJSON_CreateString(log->deployUnitId));
|
|
|
+ else
|
|
|
+ cJSON_AddItemToObject(united_content, "deployUnitId", cJSON_CreateString(bder->config->unitedDeployUnitId));
|
|
|
+ if(log->serviceUnitId != NULL)
|
|
|
+ cJSON_AddItemToObject(united_content, "serviceUnitId", cJSON_CreateString(log->serviceUnitId));
|
|
|
+ else
|
|
|
+ cJSON_AddItemToObject(united_content, "serviceUnitId", cJSON_CreateString(bder->config->unitedServiceUnitId));
|
|
|
+
|
|
|
if (log->Host != NULL) {
|
|
|
cJSON_AddItemToObject(united_content, "host", cJSON_CreateString(log->Host));
|
|
|
}
|
|
@@ -179,7 +185,7 @@ int add_beidou_log(log_group_builder* bder, beidou_log_item* log) {
|
|
|
bder->loggroup_size += totalBufferSize;
|
|
|
grp_log->buffer_len = totalBufferSize;
|
|
|
grp_log->type = LOG_TYPE_BEIDOU;
|
|
|
- grp_log->level = 0;
|
|
|
+ grp_log->level = (LOG_LEVEL_E)0;
|
|
|
++bder->grp->n_logs;
|
|
|
|
|
|
//delete
|
|
@@ -234,7 +240,7 @@ int add_log(log_group_builder* bder, long start_time, uint32_t pack_index, log_i
|
|
|
cJSON_AddItemToObject(skyeye_content, "CmptId", cJSON_CreateString(bder->config->skyeyeCmptId));
|
|
|
cJSON_AddItemToObject(skyeye_content, "CmptName", cJSON_CreateString(bder->config->skyeyeCmptName));
|
|
|
//日志数�信�
|
|
|
- if (log->Type == LOG_TYPE_USER || log->Type == LOG_TYPE_BUSINESS_USER) {
|
|
|
+ if (log->Type == LOG_TYPE_USER || log->Type == LOG_TYPE_BUSINESS_USER || log->Type == LOG_TYPE_VTMWEB) {
|
|
|
if (log->Level == LOG_LEVEL_DEBUG) {
|
|
|
cJSON_AddItemToObject(skyeye_content, "LogFile", cJSON_CreateString("UD"));
|
|
|
cJSON_AddItemToObject(meta_log_content, "baseLogType", cJSON_CreateString("DEBUG"));
|
|
@@ -397,7 +403,11 @@ int add_log(log_group_builder* bder, long start_time, uint32_t pack_index, log_i
|
|
|
grp_log->type = LOG_TYPE_SYS_BUSINESS;
|
|
|
} else if (log->Type == LOG_TYPE_BUSINESS_USER) {
|
|
|
grp_log->type = LOG_TYPE_USER_BUSINESS;
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else if (log->Type == LOG_TYPE_VTMWEB) {
|
|
|
+ grp_log->type = LOG_TYPE_WEBSDK;
|
|
|
+ }
|
|
|
+ else {
|
|
|
grp_log->type = LOG_TYPE_SYS_SKYEYE;
|
|
|
}
|
|
|
grp_log->level = log->Level;
|
|
@@ -555,6 +565,8 @@ static uint32_t _log_pack(log_group_builder* bder, log_buf* buf)
|
|
|
cJSON_AddItemToObject(pack_content, "topic", cJSON_CreateString(bder->config->business_user_topic));
|
|
|
else if (bder->grp->logs[0].type == LOG_TYPE_SYS_BUSINESS)
|
|
|
cJSON_AddItemToObject(pack_content, "topic", cJSON_CreateString(bder->config->business_sys_topic));
|
|
|
+ else if (bder->grp->logs[0].type == LOG_TYPE_WEBSDK)
|
|
|
+ cJSON_AddItemToObject(pack_content, "topic", cJSON_CreateString(bder->config->vtmweb_topic));
|
|
|
|
|
|
for (i = 0; i < bder->grp->n_logs; i++) {
|
|
|
if (bder->grp->logs[i].buffer != NULL && (bder->grp->logs[0].type == LOG_TYPE_BEIDOU || bder->grp->logs[i].check))
|
|
@@ -660,21 +672,32 @@ void clear_errJson_msg(log_group_builder* bder)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+char* replace_string(char* dstStr, char* src, char* strto) {
|
|
|
+ char* start_pos = strstr(dstStr, src);
|
|
|
+ if (start_pos != NULL) {
|
|
|
+ int src_len = strlen(src);
|
|
|
+ int strto_len = strlen(strto);
|
|
|
+ memmove(start_pos + strto_len, start_pos + src_len, strlen(start_pos + src_len) + 1);
|
|
|
+ memcpy(start_pos, strto, strto_len);
|
|
|
+ }
|
|
|
+ return dstStr;
|
|
|
+}
|
|
|
+
|
|
|
void add_log_terminal_no(log_group_builder* bder, char* no) {
|
|
|
|
|
|
int32_t totalBufferSize;
|
|
|
build_item* grp_log;
|
|
|
char* str_message_content;
|
|
|
int i, changed = 0;
|
|
|
- cJSON* message_content = NULL;
|
|
|
|
|
|
for (i = 0; i < bder->grp->n_logs; i++) {
|
|
|
if (bder->grp->logs[i].buffer != NULL)
|
|
|
{
|
|
|
- cJSON* message_content = cJSON_Parse(bder->grp->logs[i].buffer);
|
|
|
- if (message_content == NULL)
|
|
|
- continue;//�完整json
|
|
|
- if (bder->grp->logs[i].type != LOG_TYPE_BEIDOU) {
|
|
|
+ if (bder->grp->logs[i].type != LOG_TYPE_BEIDOU)// not beidou logs
|
|
|
+ {
|
|
|
+ cJSON* message_content = cJSON_Parse(bder->grp->logs[i].buffer);
|
|
|
+ if (message_content == NULL)
|
|
|
+ continue;
|
|
|
cJSON* content = NULL;
|
|
|
cJSON* log = cJSON_GetObjectItem(message_content, "log");
|
|
|
if (log == NULL)
|
|
@@ -691,8 +714,74 @@ void add_log_terminal_no(log_group_builder* bder, char* no) {
|
|
|
changed = 1;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (changed) {
|
|
|
+ str_message_content = cJSON_PrintUnformatted(message_content);
|
|
|
+ totalBufferSize = strlen(str_message_content) + 1;
|
|
|
+ grp_log = &(bder->grp->logs[i]);
|
|
|
+ if (grp_log->buffer == NULL || grp_log->buffer_len < totalBufferSize)
|
|
|
+ {
|
|
|
+ _adjust_buffer(grp_log, totalBufferSize);
|
|
|
+ }
|
|
|
+ memcpy(grp_log->buffer, str_message_content, totalBufferSize);
|
|
|
+ bder->loggroup_size -= grp_log->buffer_len;
|
|
|
+ bder->loggroup_size += totalBufferSize;
|
|
|
+ grp_log->buffer_len = totalBufferSize;
|
|
|
+ cJSON_free(str_message_content);
|
|
|
+ }
|
|
|
+
|
|
|
+ //delete
|
|
|
+ cJSON_Delete(message_content);
|
|
|
+
|
|
|
}
|
|
|
else {
|
|
|
+ grp_log = &(bder->grp->logs[i]);
|
|
|
+ char src[MAX_PATH] = "\"tags\":{}";
|
|
|
+ char to[MAX_PATH] = "";
|
|
|
+ char replaceLog[3000] = "";
|
|
|
+
|
|
|
+ sprintf(to, "\"tags\":{\"TerminalNo\":\"%s\"}", no);
|
|
|
+ memcpy(replaceLog, grp_log->buffer, grp_log->buffer_len + 1);
|
|
|
+ replace_string(replaceLog, src, to);
|
|
|
+
|
|
|
+ if (strlen(replaceLog) > grp_log->buffer_len)
|
|
|
+ {
|
|
|
+ _adjust_buffer(grp_log, strlen(replaceLog) + 1);
|
|
|
+ memcpy(grp_log->buffer, replaceLog, strlen(replaceLog) + 1);
|
|
|
+ bder->loggroup_size -= grp_log->buffer_len;
|
|
|
+ bder->loggroup_size += strlen(replaceLog) + 1;
|
|
|
+ grp_log->buffer_len = strlen(replaceLog) + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /*
|
|
|
+ std::string dstStr = grp_log->buffer;
|
|
|
+ std::string src = R"("tags":{})";
|
|
|
+ char to[MAX_PATH] = "";
|
|
|
+ sprintf(to, R"("tags":{"TerminalNo":"%s"})", no);
|
|
|
+ std::string strto = to;
|
|
|
+
|
|
|
+ //std::string result = std::regex_replace(dstStr, std::regex(src), strto);
|
|
|
+ size_t start_pos = 0;
|
|
|
+ while ((start_pos = dstStr.find(src, start_pos)) != std::string::npos) {
|
|
|
+ dstStr.replace(start_pos, src.length(), strto);
|
|
|
+ start_pos += strto.length(); // ·ÀÖ¹ÎÞÏÞÑ»·
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ auto result = dstStr;
|
|
|
+ if (result.length() > grp_log->buffer_len)
|
|
|
+ {
|
|
|
+ _adjust_buffer(grp_log, result.length() + 1);
|
|
|
+ memcpy(grp_log->buffer, result.c_str(), result.length() + 1);
|
|
|
+ bder->loggroup_size -= grp_log->buffer_len;
|
|
|
+ bder->loggroup_size += result.length() + 1;
|
|
|
+ grp_log->buffer_len = result.length() + 1;
|
|
|
+ }
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ /*
|
|
|
+ std::string total
|
|
|
cJSON* tags = cJSON_GetObjectItem(message_content, "tags");
|
|
|
if (tags != NULL && !cJSON_HasObjectItem(tags, "TerminalNo"))
|
|
|
{
|
|
@@ -700,25 +789,10 @@ void add_log_terminal_no(log_group_builder* bder, char* no) {
|
|
|
cJSON_AddItemToObject(tags, "TerminalNo", cJSON_CreateString(no));
|
|
|
changed = 1;
|
|
|
}
|
|
|
+ */
|
|
|
}
|
|
|
|
|
|
- if (changed) {
|
|
|
- str_message_content = cJSON_PrintUnformatted(message_content);
|
|
|
- totalBufferSize = strlen(str_message_content) + 1;
|
|
|
- grp_log = &(bder->grp->logs[i]);
|
|
|
- if (grp_log->buffer == NULL || grp_log->buffer_len < totalBufferSize)
|
|
|
- {
|
|
|
- _adjust_buffer(grp_log, totalBufferSize);
|
|
|
- }
|
|
|
- memcpy(grp_log->buffer, str_message_content, totalBufferSize);
|
|
|
- bder->loggroup_size -= grp_log->buffer_len;
|
|
|
- bder->loggroup_size += totalBufferSize;
|
|
|
- grp_log->buffer_len = totalBufferSize;
|
|
|
- cJSON_free(str_message_content);
|
|
|
- }
|
|
|
-
|
|
|
- //delete
|
|
|
- cJSON_Delete(message_content);
|
|
|
+
|
|
|
}
|
|
|
else
|
|
|
{
|