123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include "stdafx.h"
- #include "mod_alarm.h"
- #ifdef RVC_OS_WIN
- #else
- #include <sys/timeb.h>
- #include "SpUtility.h"
- #endif
- void CAlarmEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
- const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
- const CAutoArray<DWORD> &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()
|