Browse Source

!4 upload logs more quickly

chenliangyu 1 year ago
parent
commit
f6689389fa

+ 14 - 0
Framework/RvcLogSdk/log_api.cpp

@@ -258,6 +258,20 @@ int LOG_OS_HttpPost(const char* url,
 			if (responseIns.success) {
 				retCode = 200;
 			} else {
+				/*
+				HttpClientRequestConfig sendErr(HttpRequestMethod::POST, "http://99.12.43.134:9000/upload_msg");
+				HttpClientResponseResult curResult;
+				Json::Value rootReq;
+				Json::FastWriter writer;
+				rootReq["req"] = str.c_str();
+				rootReq["ans"] = result.content;
+				std::string jsonReq = writer.write(rootReq);
+				sendErr.SetJsonBody(jsonReq.c_str());
+				RestfulClient client = RestfulClient::getInstance();
+				sendErr.PreDo();
+				client.Do(&sendErr, &curResult);
+				*/
+
 				if (responseIns.errorCode.find("RTI1002") != -1)
 					retCode = 300;	
 				else if (!is_utf8((const char*)str.c_str())) {

+ 22 - 6
Framework/RvcLogSdk/log_builder.cpp

@@ -1,3 +1,4 @@
+#include "RestfulFunc.h"
 #include "log_builder.h"
 #include <string.h>
 #include <stdio.h>
@@ -6,6 +7,7 @@
 #include <stdlib.h>
 #include "inner_log.h"
 #include <lz4.h>
+#include "json/json.h"
 
 /**
  * adjust buffer, this function will ensure tag's buffer size >= tag->now_buffer_len + new_len
@@ -218,14 +220,10 @@ int add_log(log_group_builder* bder, long start_time, uint32_t pack_index, log_i
 
     memset(bder->grp->logs[bder->grp->n_logs].uuid, 0, MAX_UUID_LEN);
     get_format_uuid(bder->grp->logs[bder->grp->n_logs].uuid, MAX_UUID_LEN);
-    aos_debug_log((LB, "add_log 1"));
-    aos_debug_log((LB, "add_log 2"));
+
     now = record_time;
-    aos_debug_log((LB, "add_log 3"));
     GetTimeStr(now, nowTime);
-    aos_debug_log((LB, "add_log 4"));
     GetUnitedTimeStr(now, unitedNowTime);
-    aos_debug_log((LB, "add_log 5"));
 
     skyeye_content = cJSON_CreateObject();
     meta_log_content = cJSON_CreateObject();
@@ -660,14 +658,32 @@ void clear_errJson_msg(log_group_builder* bder)
     cJSON* message_content = NULL;
 
     for (i = 0; i < bder->grp->n_logs; i++) {
-        if (bder->grp->logs[i].buffer != NULL)
+        if (bder->grp->logs[i].buffer != NULL && bder->grp->logs[i].type != build_type_e::LOG_TYPE_BEIDOU)
         {
             cJSON* message_content = cJSON_Parse(bder->grp->logs[i].buffer);
             if (message_content == NULL)
+            {
                 bder->grp->logs[i].check = 0;
+                /*
+                HttpClientRequestConfig sendErr(HttpRequestMethod::POST, "http://99.12.43.134:9000/upload_msg");
+                HttpClientResponseResult curResult;
+                Json::Value rootReq;
+                Json::FastWriter writer;
+                rootReq["req"] = bder->grp->logs[i].buffer;
+                rootReq["ans"] = "Json_not_vaild";
+                std::string jsonReq = writer.write(rootReq);
+                sendErr.SetJsonBody(jsonReq.c_str());
+                RestfulClient client = RestfulClient::getInstance();
+                sendErr.PreDo();
+                client.Do(&sendErr, &curResult);
+                */
+            }                
             else
                 bder->grp->logs[i].check = 1;
             cJSON_Delete(message_content);
+
+
+            
         }
     }
 }

+ 1 - 1
Framework/RvcLogSdk/log_producer_config.c

@@ -30,7 +30,7 @@ static void _set_default_producer_config(log_producer_config* pConfig)
     pConfig->enableGuarder = 0;
     pConfig->tokenFun = NULL;
 
-    pConfig->sendThreadCount = 2;
+    pConfig->sendThreadCount = 4;
     pConfig->sendThreadWaitMs = 100;
 
     pConfig->logBytesPerPackage = MAX_LOG_COUNT * 1024;

+ 8 - 9
Framework/spbase/sp_logwithlink.cpp

@@ -24,6 +24,7 @@
 #include <winpr/file.h>
 #include <winpr/wlog.h>
 #include "sp_httpDefine.h"
+#include <mutex>
 #define TAG SPBASE_TAG("sp_logwithlink")
 
 void* g_logProducer = NULL;//为spshell、spbase共用,所以不放入getEntityResource中
@@ -37,6 +38,7 @@ int g_curEntityIdx = 0;
 std::map<std::string, int> g_entityDebugLevelArr;
 void* g_logProduceSender = NULL;
 int curEntityLogLevel = 1;
+std::mutex g_logMtx;
 
 
 void Log_GetToken(char* channelId, char* token, char *terminalno, char *reserve1) {
@@ -113,11 +115,9 @@ public:
     CSimpleString VtmCode;
     void* logProducer;
     bool m_doLog;
-    long m_time;
     Link_private(LOG_LEVEL_E t_level, LOG_TYPE_E t_type)
         : Level(t_level), Type(t_type), BeginTime(0), EndTime(0), CostTime(0), ResultCode("SUC0000"), m_doLog(true)
     {
-        m_time = time(NULL);
         TraceID = ResultMsg = LogCode = API = BussID = TipMsg = SourceType = VtmCode = "";
         logProducer = NULL;
     }
@@ -416,7 +416,7 @@ DbgWithLink& DbgWithLink::setVtmCode(CSimpleStringA t_VtmCode) {
 }
 
 void DbgWithLink::operator () (const char* str, ...)  const  {
-   
+    std::lock_guard<std::mutex> lock(g_logMtx);
     if (str == nullptr)
         return;
 
@@ -478,12 +478,11 @@ void DbgWithLink::operator () (const char* str, ...)  const  {
         }
         if (cur != NULL) {
             if (log.Type == LOG_TYPE_SYSTEM && curEntityLogLevel <= log.Level)
-                rst = log_producer_client_add_log(cur, &log, 1, m_priPtr->m_time);
+                rst = log_producer_client_add_log(cur, &log, 1, time(NULL));
             else if (log.Type != LOG_TYPE_SYSTEM)
-                rst = log_producer_client_add_log(cur, &log, 1, m_priPtr->m_time);
+                rst = log_producer_client_add_log(cur, &log, 1, time(NULL));
         }
     }
-
     //LOG_LEVEL_DEBUG, LOG_LEVEL_INFO, LOG_LEVEL_WARN, LOG_LEVEL_ERROR, LOG_LEVEL_FATAL
     if (!m_priPtr->m_doLog) {
         return;
@@ -512,7 +511,7 @@ void DbgWithLink::operator () (const char* str, ...)  const  {
 }
 
 void DbgWithLink::operator () ()  const  {
-
+    std::lock_guard<std::mutex> lock(g_logMtx);
     log_item log;
     log.Level = m_priPtr->Level;
     log.Type = m_priPtr->Type;
@@ -541,9 +540,9 @@ void DbgWithLink::operator () ()  const  {
     }
     if (cur != NULL) {
         if (log.Type == LOG_TYPE_SYSTEM && curEntityLogLevel <= log.Level)
-            log_producer_client_add_log(cur, &log, 1, m_priPtr->m_time);
+            log_producer_client_add_log(cur, &log, 1, time(NULL));
         else if (log.Type != LOG_TYPE_SYSTEM)
-            log_producer_client_add_log(cur, &log, 1, m_priPtr->m_time);
+            log_producer_client_add_log(cur, &log, 1, time(NULL));
     }
 
     if (!m_priPtr->m_doLog)