Pārlūkot izejas kodu

!2 fix uos problem

chenliangyu 1 gadu atpakaļ
vecāks
revīzija
91e42e79f1

+ 10 - 4
Module/mod_healthmanager/mod_healthmanager.cpp

@@ -607,6 +607,8 @@ bool CHealthManagerEntity::StartGuardian()
 
 	//oiltmp TODO 如果是未安装,不启动guardian
 	//root.ini 不存在,表示未安装
+	CSystemStaticInfo staticInfo;
+	GetFunction()->GetSystemStaticInfo(staticInfo);
 
 	/** 添加日志控制逻辑 Gifur@202414]*/
 	SP::Module::Comm::Settings::InitializeOtherLogSwitch(this, "guardian");
@@ -636,8 +638,12 @@ bool CHealthManagerEntity::StartGuardian()
 		}
 
 	}
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("guardian path[%s]", csBinPath.GetData());
-	csAll = csSep +  csBinPath + csSep + m_sysStaticInfo.strTerminalID + csSep;//add terminalno to guardian
+
+	csAll = csSep + csBinPath + csSep + " " + staticInfo.strTerminalID;//add terminalno to guardian
+
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("guardian path[%s], run script[%s]", csBinPath.GetData(), csAll.GetData());
+	
+	
 	LPTSTR szCmdline = _strdup(csAll);
 	if( !CreateProcessA( NULL,szCmdline,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)) 
 	{
@@ -652,8 +658,8 @@ bool CHealthManagerEntity::StartGuardian()
 	tk_process_t* process = NULL;
 	tk_process_option_t option;
 	csBinPath += "/guardian";
-	Dbg("path:%s", (const char*)csBinPath);
-	sprintf(app, "%s %s %s %d", (const char*)csBinPath, m_sysStaticInfo.strTerminalID, "oiltest", 1);
+	sprintf(app, "%s %s %s %d", (const char*)csBinPath, staticInfo.strTerminalID.GetData(), "oiltest", 1);
+	Dbg("path:%s, app:%s", (const char*)csBinPath, (const char*)app);
 	option.exit_cb = NULL;
 	option.file = NULL;
 	option.flags = 0;

+ 7 - 0
Other/libRestfulFunc/RestfulFunc.h

@@ -217,9 +217,16 @@ private:
     restFul_GetTokenCallBack g_tokenCall;
     void InitGetToken(restFul_GetTokenCallBack t_getToken) {
         if (t_getToken)
+        {
+            m_withToken = true;
             g_tokenCall = t_getToken;
+        }            
         else
+        {
+            m_withToken = false;
             g_tokenCall = nullptr;
+        }
+            
 
         
     };

+ 1 - 1
Other/liblog4rvcother/log4cplus_helper.cpp

@@ -5,7 +5,7 @@
 #include <mutex>
 
 #include "log4link.h"
-#include "skyeyeLog/skyeyeLog.h"
+#include "exLog/skyeyeLog.h"
 
 #if defined(_WIN32) && defined (LOG4CPLUS_HAVE_WIN32_CONSOLE)
 #include <log4cplus/win32consoleappender.h>

+ 3 - 1
Other/liblog4rvcother/log4rvcother.cpp

@@ -81,6 +81,7 @@ namespace cmb {
 		config->log_dir = "";
 		config->log_level = CMB_LOG_LEVEL_OFF;
 		config->log_type = 0; /*OFF*/
+		
 
 		//if(env.record_type.find("CONSOLE") != std::string::npos)
 		//	config->log_type |= CMB_LOG_TYPE_CONSOLE;
@@ -158,13 +159,13 @@ namespace cmb {
 		log_init_config log_env_config;
 		std::string instance_name;
 		bool is_vtm_env(false);
+		std::string terminalno = config.terminalno;
 
 		if(log4plus_initialized) {
 			assert(log4rvcother::instance() != &default_instance);
 			ret_msg = "WARN: log instance has been initialized.";
 			goto error_point;
 		}
-
 		if(IsVTMProcess()) {
 			is_vtm_env = true;
 			ret_msg = env_string + "INFO: vtm runtime, it's VTMers' responsibility to do initialize job.";
@@ -210,6 +211,7 @@ namespace cmb {
 		/*提前在这里赋值,以便让 LOG4VTM 宏生效*/
 		log4plus_initialized = true;
         if (is_vtm_env && (lhs->log_type & CMB_LOG_TYPE_SOCKET) != 0) {
+			lhs->terminalno = terminalno;
             log4cplus_helper::get_instance()->initialize_linklog(*lhs);
         }
 		LOG4VTM(INFO, "==============Log4Vendor(" << instance_name << ") start==============");

+ 3 - 3
Other/libpublicFun/CMakeLists.txt

@@ -9,8 +9,8 @@ set(${MODULE_PREFIX}_SRCS
     ${ThirdPartyHeadRoot}/CJson/cJSON.c
     exLog/log.h
     exLog/log.cpp
-	skyeyeLog/skyeyeLog.h
-	skyeyeLog/skyeyeLog.cpp
+	exLog/skyeyeLog.h
+	exLog/skyeyeLog.cpp
     portCheck.cpp
 	${CMAKE_SOURCE_DIR}/ThirdParty/Include/uuid4/uuid4.cpp
 	
@@ -42,7 +42,7 @@ endif()
 
 add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
 
-
+set(CMAKE_CXX_FLAGS "${CMAK_CXX_FLAGS} -g3")
 # 依赖libscreencodec、acmstrdec、acmstrenc
 target_include_directories(${MODULE_NAME} PRIVATE
 	${RVC_COMMON_INCLUDE_DIR}

+ 80 - 67
Other/libpublicFun/skyeyeLog/skyeyeLog.cpp → Other/libpublicFun/exLog/skyeyeLog.cpp

@@ -8,6 +8,10 @@
 #include "SpDefine.h"
 #include <list>
 #include <cstdarg>
+#if (defined _WIN32 || defined _WIN64)
+#else
+#include <winpr/string.h>
+#endif
 
 #define MAX_LOG_LEN 1900
 void skyeye_GetToken(char* channelId, char* token, char* terminalno, char* reserve1);
@@ -63,7 +67,7 @@ public:
 		std::string t_tokenSecret, std::string t_terminalno, std::string t_installVersion)
 	{
 		interval = std::chrono::minutes(t_expired_min);
-		endpoint = t_endpoint;
+		endpoint = t_endpoint + "/api/auth/v2/token";
 		channelId = t_channelId;
 		tokenSecret = t_tokenSecret;
 		terminalno = t_terminalno;
@@ -79,23 +83,28 @@ public:
 	std::pair<std::string ,std::string> getToken()
 	{
 		auto execute_refreshToken = [this] {
-			HttpClientRequestConfig config(endpoint, NULL);
+			HttpClientRequestConfig config(HttpRequestMethod::POST, endpoint, NULL);
 			HttpClientResponseResult result;
 
 
-			Json::Value root;
-			root["installVersion"] = installVersion;
-			root["terminalNo"] = terminalno;
+			Json::Value businessId;
+			businessId["installVersion"] = installVersion;
+			businessId["terminalNo"] = terminalno;
 			Json::FastWriter writer;
-			std::string businessId_str = writer.write(root);
+			std::string businessId_str = writer.write(businessId);
+
+			Json::Value root;
+			root["channelId"] = channelId;
+			root["clientSecret"] = tokenSecret;
+			root["businessId"] = businessId_str;
+			std::string root_str = writer.write(root);
+
+			config.SetJsonBody(root_str);
 
-			config.AppendQuery("channelId", channelId);
-			config.AppendQuery("clientSecret", tokenSecret);
-			config.AppendQuery("businessId", businessId_str);
 			RestfulClient client = RestfulClient::getInstance();
 			client.Do(&config, &result);
 			if (result.ResponseOK()) {
-				//½âÎö·µ»Ø×Ö·û´®
+				//解�返回字符串
 				Json::Reader reader;
 				Json::Value rootRet;
 				if (!reader.parse(result.content, rootRet, false))
@@ -234,51 +243,55 @@ public:
 
 	bool InitSender(std::string t_endpoint, std::string t_topic)
 	{
-		auto skyeye_sender = [this, t_endpoint, t_topic] {
-			if (m_msgArr.empty())
-				return;
-			std::vector<Link_private> sendArr;
-			m_mtx.lock();
-			//max send 12 logs
-			for (int i = 0; i < 12; i++)
+		auto skyeye_sender = [this](std::string t_endpoint, std::string t_topic) {
+			while (true)
 			{
-				if (m_msgArr.size() == 0)
-					break;
-
-				sendArr.emplace_back(m_msgArr.front());
-				m_msgArr.pop_front();
+				if (m_msgArr.empty())
+					std::this_thread::sleep_for(std::chrono::seconds(30));//every 30 seconds
+				std::vector<Link_private> sendArr;
+				m_mtx.lock();
+				//max send 12 logs
+				for (int i = 0; i < 12; i++)
+				{
+					if (m_msgArr.size() == 0)
+						break;
+
+					sendArr.emplace_back(m_msgArr.front());
+					m_msgArr.pop_front();
+				}
+				m_mtx.unlock();
+
+				if (sendArr.size() == 0)
+					return; //no need to send
+
+				//generate send str
+				Json::Value root;
+				Json::Value arraylist;//消�列表
+				Json::FastWriter fw;//写入对象
+				for (int i = 0; i < sendArr.size(); i++)
+				{
+					arraylist[i] = convertLinkPrivateToStr(sendArr[i]);
+				}
+				root["message_list"] = arraylist;
+				root["topic"] = t_topic;
+				auto sendStr = fw.write(root);
+
+
+				//send
+				HttpClientResponseResult result;
+				HttpClientRequestConfig config(HttpRequestMethod::POST, t_endpoint, skyeye_GetToken);
+				config.SetTimeout(60);
+
+				config.SetJsonBody(sendStr.c_str());
+
+				RestfulClient client = RestfulClient::getInstance();
+				config.PreDo();
+				client.Do(&config, &result);
 			}
-			m_mtx.unlock();
-
-			if (sendArr.size() == 0)
-				return; //no need to send
-
-			//generate send str
-			Json::Value root;
-			Json::Value arraylist;//ÏûÏ¢Áбí
-			Json::FastWriter fw;//дÈë¶ÔÏó
-			for (int i = 0; i < sendArr.size(); i++)
-			{
-				arraylist[i] = convertLinkPrivateToStr(sendArr[i]);
-			}
-			root["message_list"] = arraylist;
-			root["topic"] = t_topic;
-			auto sendStr = fw.write(root);
-
-
-			//send
-			HttpClientResponseResult result;
-			HttpClientRequestConfig config(HttpRequestMethod::POST, t_endpoint,skyeye_GetToken);
-			config.SetTimeout(60);
-
-			config.SetJsonBody(sendStr.c_str());
-
-			RestfulClient client = RestfulClient::getInstance();
-			config.PreDo();
-			client.Do(&config, &result);
+			
 		};
 
-		std::thread(skyeye_sender).detach();
+		std::thread(skyeye_sender, t_endpoint, t_topic).detach();
 	}
 
 	skyeye_sender()
@@ -304,7 +317,7 @@ void skyeye_GetToken(char* channelId, char* token, char* terminalno, char* reser
 
 skyeye_logger& skyeye_logger::getDefaultLogger()
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	static skyeye_logger cur;
 	if (cur.m_msg == nullptr)
 		cur.m_msg = new Link_private(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM);
@@ -318,7 +331,7 @@ skyeye_logger& skyeye_logger::getDefaultLogger()
 
 skyeye_logger& skyeye_logger::setLogLevel(LOG_LEVEL_E t_level)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->Level = t_level;
 	return *this;
@@ -326,7 +339,7 @@ skyeye_logger& skyeye_logger::setLogLevel(LOG_LEVEL_E t_level)
 
 skyeye_logger& skyeye_logger::setLogType(LOG_TYPE_E t_type)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->Type = t_type;
 	return *this;
@@ -334,7 +347,7 @@ skyeye_logger& skyeye_logger::setLogType(LOG_TYPE_E t_type)
 
 skyeye_logger& skyeye_logger::setResultCode(std::string t_ResultCode)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->ResultCode = t_ResultCode;
 	return *this;
@@ -342,7 +355,7 @@ skyeye_logger& skyeye_logger::setResultCode(std::string t_ResultCode)
 
 skyeye_logger& skyeye_logger::setTraceID(std::string t_TraceID)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->TraceID = t_TraceID;
 	return *this;
@@ -350,7 +363,7 @@ skyeye_logger& skyeye_logger::setTraceID(std::string t_TraceID)
 
 skyeye_logger& skyeye_logger::setResultMsg(std::string t_ResultMsg)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->ResultMsg = t_ResultMsg;
 	return *this;
@@ -358,7 +371,7 @@ skyeye_logger& skyeye_logger::setResultMsg(std::string t_ResultMsg)
 
 skyeye_logger& skyeye_logger::setLogCode(std::string t_LogCode)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->LogCode = t_LogCode;
 	return *this;
@@ -366,7 +379,7 @@ skyeye_logger& skyeye_logger::setLogCode(std::string t_LogCode)
 
 skyeye_logger& skyeye_logger::setAPI(std::string t_API)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->API = t_API;
 	return *this;
@@ -374,7 +387,7 @@ skyeye_logger& skyeye_logger::setAPI(std::string t_API)
 
 skyeye_logger& skyeye_logger::setBussID(std::string t_BussID)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->BussID = t_BussID;
 	return *this;
@@ -382,7 +395,7 @@ skyeye_logger& skyeye_logger::setBussID(std::string t_BussID)
 
 skyeye_logger& skyeye_logger::setTipMsg(std::string t_TipMsg)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->TipMsg = t_TipMsg;
 	return *this;
@@ -390,7 +403,7 @@ skyeye_logger& skyeye_logger::setTipMsg(std::string t_TipMsg)
 
 skyeye_logger& skyeye_logger::setSourceType(std::string t_SourceType)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->SourceType = t_SourceType;
 	return *this;
@@ -398,7 +411,7 @@ skyeye_logger& skyeye_logger::setSourceType(std::string t_SourceType)
 
 skyeye_logger& skyeye_logger::setBeginTime(long t_BeginTime)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->BeginTime = t_BeginTime;
 	return *this;
@@ -406,7 +419,7 @@ skyeye_logger& skyeye_logger::setBeginTime(long t_BeginTime)
 
 skyeye_logger& skyeye_logger::setEndTime(long t_EndTime)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->EndTime = t_EndTime;
 	return *this;
@@ -414,7 +427,7 @@ skyeye_logger& skyeye_logger::setEndTime(long t_EndTime)
 
 skyeye_logger& skyeye_logger::setCostTime(long t_costTime)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->CostTime = t_costTime;
 	return *this;
@@ -422,7 +435,7 @@ skyeye_logger& skyeye_logger::setCostTime(long t_costTime)
 
 skyeye_logger& skyeye_logger::setVtmCode(std::string t_VtmCode)
 {
-	// TODO: ÔÚ´Ë´¦²åÈë return Óï¾ä
+	// TODO: 在此处�入 return 语�
 	if (m_msg != nullptr)
 		m_msg->VtmCode = t_VtmCode;
 	return *this;
@@ -481,7 +494,7 @@ void CreateDefaultLogger(std::string terminalno, std::string version, std::strin
 	constParam.m_deployUnitId = SpDefine::deployUnitId;
 
 	skyeye_logger::getDefaultLogger().m_constParam = constParam;
-	TokenManager::getInstance().InitTokenManager(30, SpDefine::CenterConfigTotal, SpDefine::channelId, SpDefine::tokenSecret, constParam.m_terminalNo, constParam.m_version);
+	TokenManager::getInstance().InitTokenManager(30, SpDefine::CommonLaunchUrl, SpDefine::channelId, SpDefine::tokenSecret, constParam.m_terminalNo, constParam.m_version);
 	skyeye_sender::getInstance().InitSender(SpDefine::endpoint_env, SpDefine::topicSys);
 
 }

+ 17 - 17
Other/libpublicFun/skyeyeLog/skyeyeLog.h → Other/libpublicFun/exLog/skyeyeLog.h

@@ -8,7 +8,7 @@ class Link_const
 public:
 	std::string m_terminalNo;
 	std::string m_entityName;
-	std::string m_item; //对应于天眼item字段,即实体id
+	std::string m_item; //瀵瑰簲浜庡ぉ鐪糹tem瀛楁�锛屽嵆瀹炰綋id
 	std::string m_cmptId;
 	std::string m_cmptName;
 	std::string m_serviceUnitId;
@@ -92,28 +92,28 @@ public:
 	static skyeye_logger& getDefaultLogger();
 
 
-	//用户、系统日志均必填,设置日志级别
+	//鐢ㄦ埛銆佺郴缁熸棩蹇楀潎蹇呭~锛岃�缃�棩蹇楃骇鍒�
 	skyeye_logger& setLogLevel(LOG_LEVEL_E t_level);
-	//用户、系统日志均必填,设置日志类型
+	//鐢ㄦ埛銆佺郴缁熸棩蹇楀潎蹇呭~锛岃�缃�棩蹇楃被鍨�
 	skyeye_logger& setLogType(LOG_TYPE_E t_type);
-	//用户、系统日志均必填,交易处理结果代码,0表示处理成功,其他表示失败,可为系统本身的错误码,也可为后台系统返回的错误码
+	//鐢ㄦ埛銆佺郴缁熸棩蹇楀潎蹇呭~锛屼氦鏄撳�鐞嗙粨鏋滀唬鐮侊紝0琛ㄧず澶勭悊鎴愬姛锛屽叾浠栬〃绀哄け璐ワ紝鍙�负绯荤粺鏈�韩鐨勯敊璇�爜锛屼篃鍙�负鍚庡彴绯荤粺杩斿洖鐨勯敊璇�爜
 	skyeye_logger& setResultCode(std::string t_ResultCode);
-	//用户、系统日志均必填,业务跟踪ID, 32字节长度的字符串,唯一识别每笔请求
+	//鐢ㄦ埛銆佺郴缁熸棩蹇楀潎蹇呭~锛屼笟鍔¤窡韪狪D, 32瀛楄妭闀垮害鐨勫瓧绗︿覆锛屽敮涓€璇嗗埆姣忕瑪璇锋眰
 	skyeye_logger& setTraceID(std::string t_TraceID);
-	//用户、系统日志LOG_LEVEL_WARN以上必填
-	//交易处理结果信息,包括成功与失败信息,可为系统本身的成功/失败信息,也可为后台系统返回的成功/失败信息.
+	//鐢ㄦ埛銆佺郴缁熸棩蹇桳OG_LEVEL_WARN浠ヤ笂蹇呭~
+	//浜ゆ槗澶勭悊缁撴灉淇℃伅锛屽寘鎷�垚鍔熶笌澶辫触淇℃伅锛屽彲涓虹郴缁熸湰韬�殑鎴愬姛/澶辫触淇℃伅锛屼篃鍙�负鍚庡彴绯荤粺杩斿洖鐨勬垚鍔�/澶辫触淇℃伅.
 	skyeye_logger& setResultMsg(std::string t_ResultMsg);
-	//用户日志必填,日志码
-	//终端中标识各个交易如读卡、读取身份证等。如果终端由于客观原因无法识别交易场景,则可字段由上游传入。
+	//鐢ㄦ埛鏃ュ織蹇呭~锛屾棩蹇楃爜
+	//缁堢�涓�爣璇嗗悇涓�氦鏄撳�璇诲崱銆佽�鍙栬韩浠借瘉绛夈€傚�鏋滅粓绔�敱浜庡�瑙傚師鍥犳棤娉曡瘑鍒�氦鏄撳満鏅�紝鍒欏彲瀛楁�鐢变笂娓镐紶鍏ャ€�
 	skyeye_logger& setLogCode(std::string t_LogCode);
-	skyeye_logger& setAPI(std::string t_API);//用户日志必填,请求路径/接口名称.
-	skyeye_logger& setBussID(std::string t_BussID);//用户日志必填,请求业务ID
-	skyeye_logger& setTipMsg(std::string t_TipMsg);//用户日志LOG_LEVEL_WARN以上必填,直接向客户展示的报错信息.
-	skyeye_logger& setSourceType(std::string t_SourceType);//系统日志LOG_LEVEL_FATAL必填,异常来源类型
-	skyeye_logger& setBeginTime(long t_BeginTime);//用户日志必填, 请求发送/接收时间
-	skyeye_logger& setEndTime(long t_EndTime);//用户日志必填, 响应接收 / 应答时间
-	skyeye_logger& setCostTime(long t_costTime);//消耗时间,自定义字段,单位ms
-	skyeye_logger& setVtmCode(std::string t_VtmCode);//VtmCode,记录原告警
+	skyeye_logger& setAPI(std::string t_API);//鐢ㄦ埛鏃ュ織蹇呭~锛岃�姹傝矾寰�/鎺ュ彛鍚嶇О.
+	skyeye_logger& setBussID(std::string t_BussID);//鐢ㄦ埛鏃ュ織蹇呭~锛岃�姹備笟鍔�D
+	skyeye_logger& setTipMsg(std::string t_TipMsg);//鐢ㄦ埛鏃ュ織LOG_LEVEL_WARN浠ヤ笂蹇呭~锛岀洿鎺ュ悜瀹㈡埛灞曠ず鐨勬姤閿欎俊鎭�.
+	skyeye_logger& setSourceType(std::string t_SourceType);//绯荤粺鏃ュ織LOG_LEVEL_FATAL蹇呭~锛屽紓甯告潵婧愮被鍨�
+	skyeye_logger& setBeginTime(long t_BeginTime);//鐢ㄦ埛鏃ュ織蹇呭~锛� 璇锋眰鍙戦€�/鎺ユ敹鏃堕棿
+	skyeye_logger& setEndTime(long t_EndTime);//鐢ㄦ埛鏃ュ織蹇呭~锛� 鍝嶅簲鎺ユ敹 / 搴旂瓟鏃堕棿
+	skyeye_logger& setCostTime(long t_costTime);//娑堣€楁椂闂达紝鑷�畾涔夊瓧娈�,鍗曚綅ms
+	skyeye_logger& setVtmCode(std::string t_VtmCode);//VtmCode,璁板綍鍘熷憡璀�
 	void operator () (LOG_LEVEL_E t_level, const char* str, ...);
 private:
 	Link_private* m_msg;