1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #include "CLogTrack.h"
- #include "json/json.h"
- std::shared_ptr<CLogTrack> g_logPtr = nullptr;
- CLogData::CLogData()
- {
- }
- CLogData::~CLogData()
- {
- m_LogList.clear();
- }
- QString CLogData::genLogJson()
- {
- Json::Value jLog;
- jLog[LOG_CONSTANT_DEF::SOURCE] = LOG_CONSTANT_DEF::WIN;
- Json::Value item;
- for_each(m_LogList.begin(), m_LogList.end(), [&](CLogInfo v){
- item[v.sKey.toStdString()] = v.sValue.toStdString();
- });
- jLog[LOG_CONSTANT_DEF::LOGS].append(item);
- return Json::FastWriter().write(jLog).c_str();
- }
- void CLogData::pushLog(QString sKey, QString sValue)
- {
- CLogInfo li;
- li.sKey = sKey;
- li.sValue = sValue;
- m_LogList.push_back(li);
- }
- CLogTrack::CLogTrack(QString sProjectName, QString sEndpoint, QString sLogstore)
- {
- m_sUrl = QString("https://%1.%2/logstores/%3/track").arg(sProjectName).arg(sEndpoint).arg(sLogstore);
- m_bIsRun = true;
- m_thread = std::thread(std::bind(&CLogTrack::threadProc, this));
- }
- CLogTrack::~CLogTrack()
- {
- std::scoped_lock lock(m_logMutex);
- m_LogList.clear();
- m_bIsRun = false;
- m_thread.join();
- }
- void CLogTrack::putLog(CLogData log)
- {
- std::scoped_lock lock(m_logMutex);
- m_LogList.push_back(log);
- }
- void CLogTrack::threadProc()
- {
- while(m_bIsRun)
- {
- if(m_LogList.size() > 0)
- {
- CLogData ld;
- {
- std::scoped_lock lock(m_logMutex);
- ld = m_LogList.front();
- m_LogList.pop_front();
- }
- int nCode = 0;
- std::string sResponseStr = "";
- QString sBody = ld.genLogJson();
- m_httpClient.addHeader(LOG_CONSTANT_DEF::X_LOG_APIVERSION, LOG_CONSTANT_DEF::LOG_API_VERSION);
- m_httpClient.addHeader(LOG_CONSTANT_DEF::X_LOG_BODYRAWSIZE, std::to_string(sBody.length()));
- if(m_httpClient.post(m_sUrl.toStdString(), sBody.toStdString(), sResponseStr, nCode))
- {
- if(nCode == 200)//成功
- {
- // OC oc;
- // emit logFaild(oc);
- }
- }
- else
- {
- //失败
- }
- }
- else
- {
- Sleep(100);
- }
- }
- }
|