#include "stdafx.h" #include "mod_alarm.h" #ifdef RVC_OS_WIN #else #include #include "SpUtility.h" #endif void CAlarmEntity::OnLog(const CAutoArray &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel, const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID, const CAutoArray &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext &pLinkInfo) { //Dbg("receive log,pszEntityName=%s,eLogType=%d,pszMessage=%s",pszEntityName,(int)eLogType,pszMessage); #ifdef RVC_OS_WIN #else CSimpleStringA strMessage(true); if (!(pszMessage == NULL || strlen(pszMessage) == 0)) strMessage = pszMessage; //如果是旧模式则转GBK码 if (m_fsm.m_CenterModel == 0) { if (!strMessage.IsNullOrEmpty()) { std::string tmpStr = SP::Utility::UTF8ToGBK(pszMessage); strMessage = tmpStr.c_str(); } } #endif alarm_t*Alarm = new alarm_t(); char cEntityName[32]={0}; strcpy(cEntityName,pszEntityName); Alarm->EntityName = _strdup(cEntityName); char cSN[20]={0}; CUUID uuid= nLogID; strcpy(cSN,uuid.ToString()); Alarm->SN = _strdup(cSN); CSystemRunInfo sysruninfo; GetFunction()->GetSystemRunInfo(sysruninfo); Alarm->LifeID =(DWORD)sysruninfo.tmStart; Alarm->Item = dwEntityInstanceID; Alarm->UserCode = dwUserCode; //_itoa((int)eLevel,&Alarm->Level,16); //新加逻辑,对于eLogType=2 并且level=Severity_Low的低告警数据,level设置为1 if(eLogType==Log_Warning&&eLevel==Severity_Low){ Alarm->Level='1'; }else{ _itoa((int)eLogType,&Alarm->Level,16);//把level替换成logtype, } char cDescription[512]={0}; //char clogTime[32]={0};//2020-20-20 12:12:12.100 日志时间,记得释放 char warnTime[20]={0};//2020-20-20 12:12:12 告警时间,记得释放 //TODO: CrossPlaform [Gifur@2025730] #ifdef RVC_OS_WIN SYSTEMTIME st; GetLocalTime(&st); //sprintf(clogTime, "%04d-%02d-%02d %02d:%02d:%02d.%03d ", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds); sprintf(warnTime, "%04d-%02d-%02d %02d:%02d:%02d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); #else struct timeb stime = { 0, 0 }; tm nowTm = { 0 }; ftime(&stime); localtime_r(&stime.time, &nowTm); //sprintf(clogTime, "%04d-%02d-%02d %02d:%02d:%02d.%03d ", nowTm.tm_year + 1900, nowTm.tm_mon + 1, nowTm.tm_mday, nowTm.tm_hour, nowTm.tm_min, nowTm.tm_sec, stime.millitm); sprintf(warnTime, "%04d-%02d-%02d %02d:%02d:%02d", nowTm.tm_year + 1900, nowTm.tm_mon + 1, nowTm.tm_mday, nowTm.tm_hour, nowTm.tm_min, nowTm.tm_sec); #endif //TODO: CrossPlaform [Gifur@2025730] #ifdef RVC_OS_WIN strncat(cDescription, pszMessage, 512 - 1); #else strncat(cDescription, strMessage.GetData(), 512 - 1); #endif Alarm->Description = _strdup(cDescription); Alarm->warnTime = _strdup(warnTime); m_fsm.add_NewAlarm(Alarm); m_fsm.m_iRec++; if(m_fsm.m_iRec%500==0){ DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("接收总数=%d,抛弃总数=%d,未发送数目=%d",m_fsm.m_iRec,m_fsm.m_iThrow,m_fsm.m_NewUploading_alarm.size()); } } SP_BEGIN_ENTITY_MAP() SP_ENTITY(CAlarmEntity) SP_END_ENTITY_MAP()