add log in ggio

This commit is contained in:
lnk
2026-02-04 09:21:54 +08:00
parent 1bc32ae38c
commit 50dd5c8a3e
4 changed files with 75 additions and 2 deletions

View File

@@ -33,6 +33,9 @@ extern std::string WEB_EVENT;
extern std::string WEB_FILEDOWNLOAD; extern std::string WEB_FILEDOWNLOAD;
extern std::string G_CONNECT_TOPIC; extern std::string G_CONNECT_TOPIC;
//lnk20250115添加台账锁
extern pthread_mutex_t mtx;
bool DEBUGOPEN = 0; bool DEBUGOPEN = 0;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -56,7 +59,10 @@ public:
int nDataType; //告警SOE事件类型 int nDataType; //告警SOE事件类型
QString type; //参数等级type类型0-DataType 1-监测点 2-剔除标记 3-发生时刻,毫秒 4-数据链表 5-相位 6-值索引 9-实时SOE事件 QString type; //参数等级type类型0-DataType 1-监测点 2-剔除标记 3-发生时刻,毫秒 4-数据链表 5-相位 6-值索引 9-实时SOE事件
QString triggerFlag; //告警SOE事件触发指标名称 QString triggerFlag; //告警SOE事件触发指标名称
int nIndex; //数据在每条线路LineInfo值数组中的位置 int nIndex; //数据在每条线路LineInfo值数组中的位置
QString desc; //soe事件描述
QString DO; //数据对象名 QString DO; //数据对象名
QString DA; //数据属性名 QString DA; //数据属性名
QString strFullName; //数据对象名 $ 数据属性名 QString strFullName; //数据对象名 $ 数据属性名
@@ -869,6 +875,7 @@ bool ParseXMLConfig2(int xml_flag, XmlConfig *cfg, list<CTopic*> *ctopiclist,QSt
{ {
CEventData* ed = new CEventData(); //SOE事件类指针 CEventData* ed = new CEventData(); //SOE事件类指针
ed->triggerFlag = node.toElement().attribute("name"); //SOE名称 ed->triggerFlag = node.toElement().attribute("name"); //SOE名称
ed->desc = node.toElement().attribute("desc"); //SOE描述
ed->DO = node.toElement().attribute("DO"); //数据对象名 ed->DO = node.toElement().attribute("DO"); //数据对象名
ed->DA = node.toElement().attribute("DA"); //数据属性名 ed->DA = node.toElement().attribute("DA"); //数据属性名
ed->type = node.toElement().attribute("type"); //参数等级type类型0-DataType 1-监测点 2-剔除标记 3-发生时刻,毫秒 4-数据链表 5-相位 6-值索引 9-实时SOE事件 ed->type = node.toElement().attribute("type"); //参数等级type类型0-DataType 1-监测点 2-剔除标记 3-发生时刻,毫秒 4-数据链表 5-相位 6-值索引 9-实时SOE事件
@@ -2650,8 +2657,35 @@ int transfer_json_block_data(char v_wiring_type[], json_block_data *data) //json
return 1; return 1;
} }
static void format_time_ms(long long ms, char* buf, size_t buf_len)
{
time_t sec = ms / 1000;
int milli = ms % 1000;
struct tm tm_time;
localtime_r(&sec, &tm_time); // 线程安全
snprintf(buf, buf_len,
"%04d-%02d-%02d %02d:%02d:%02d.%03d",
tm_time.tm_year + 1900,
tm_time.tm_mon + 1,
tm_time.tm_mday,
tm_time.tm_hour,
tm_time.tm_min,
tm_time.tm_sec,
milli);
}
void processGGIO_start_data_end(char* mp_id,char* fullname,double v,long long time,char* devtype,int monitor_id) void processGGIO_start_data_end(char* mp_id,char* fullname,double v,long long time,char* devtype,int monitor_id)
{ {
//监测点日志的key,lnk20250526
char full_key_m_c[256]; // 分配足够空间
char full_key_m_d[256]; // 分配足够空间
snprintf(full_key_m_c, sizeof(full_key_m_c), "monitor.%s.COM", mp_id);
snprintf(full_key_m_d, sizeof(full_key_m_d), "monitor.%s.DATA", mp_id);
//监测点日志的key,lnk20250526
XmlConfig c_xmlcfg; XmlConfig c_xmlcfg;
if (xmlinfo_list.contains(devtype)) { if (xmlinfo_list.contains(devtype)) {
c_xmlcfg = xmlinfo_list[devtype]->xmlcfg; c_xmlcfg = xmlinfo_list[devtype]->xmlcfg;
@@ -2683,6 +2717,28 @@ void processGGIO_start_data_end(char* mp_id,char* fullname,double v,long long ti
if (pEventData->strFullName.indexOf(Full_name) != -1) if (pEventData->strFullName.indexOf(Full_name) != -1)
{ {
KafkaData.strText.append(QString("\"%1\"").arg(pEventData->triggerFlag)); KafkaData.strText.append(QString("\"%1\"").arg(pEventData->triggerFlag));
//使用日志接口记录日志
char time_str[64];
format_time_ms(time, time_str, sizeof(time_str));
QByteArray descBa = pEventData->desc.toLocal8Bit();
pthread_mutex_lock(&mtx); std::cout << "ggio hold lock !!!!!!!!!!!" << std::endl;
const char* mp_name_raw = find_mp_name_from_mp_id(mp_id);
pthread_mutex_unlock(&mtx); std::cout << "ggio unlock lock !!!!!!!!!!!" << std::endl;
char mp_name[128];
if (mp_name_raw && mp_name_raw[0] != '\0') {
snprintf(mp_name, sizeof(mp_name), "%s", mp_name_raw);
} else {
snprintf(mp_name, sizeof(mp_name), "unknown");
}
DIY_WARNLOG_CODE(full_key_m_d, LOG_CODE_REPORT,
"监测点:%s(%s),在%s发生事件:%s,事件值:%.2f",
mp_name, mp_id, time_str, descBa.constData(), v);
break; break;
} }
} }
@@ -2695,6 +2751,7 @@ void processGGIO_start_data_end(char* mp_id,char* fullname,double v,long long ti
kafka_data_list_mutex.lock(); //加锁 kafka_data_list_mutex.lock(); //加锁
kafka_data_list.append(KafkaData); //添加 kafka发送链表 kafka_data_list.append(KafkaData); //添加 kafka发送链表
kafka_data_list_mutex.unlock(); //解锁 kafka_data_list_mutex.unlock(); //解锁
} }
//zw修改 2023-8-31 新增或更新list队列 写入xml数据库信息 模型编码 终端型号 终端厂家 oss存储路径 时间 //zw修改 2023-8-31 新增或更新list队列 写入xml数据库信息 模型编码 终端型号 终端厂家 oss存储路径 时间

View File

@@ -1759,6 +1759,19 @@ int find_mp_index_from_mp_id(std::string line)
} }
char* find_mp_name_from_mp_id(const char* mp_id)
{
LD_info_t* LD_info = NULL;
LD_info = find_LD_info_only_from_mp_id((char*)mp_id);
if(LD_info == NULL){
return 0;
}
else{
return LD_info->name;
}
}
int myMessageCallbackrtdata(CPushConsumer* consumer, CMessageExt* msg) int myMessageCallbackrtdata(CPushConsumer* consumer, CMessageExt* msg)
{ {
if(INITFLAG != 1)return 1;//防止崩溃 if(INITFLAG != 1)return 1;//防止崩溃

View File

@@ -159,7 +159,8 @@ typedef enum LogCode {
LOG_CODE_LOG_REQUEST = 405, /* 日志请求 */ LOG_CODE_LOG_REQUEST = 405, /* 日志请求 */
LOG_CODE_REPORT = 500, /* 报告处理 */ LOG_CODE_REPORT = 500, /* 报告处理 */
LOG_CODE_COMM = 600, /* 通讯状态 */ LOG_CODE_COMM = 600, /* 通讯状态 */
LOG_CODE_SPACE_ALARM = 700 /* 空间告警 */ LOG_CODE_SPACE_ALARM = 700, /* 空间告警 */
LOG_CODE_DEVICE = 800 /* 设备告警 */
} LogCode; } LogCode;
#ifdef __cplusplus #ifdef __cplusplus

View File

@@ -152,6 +152,8 @@ int parse_model_cfg_web();
void SOEFileWeb(char* localpath,char* cloudpath,char* wavepath); void SOEFileWeb(char* localpath,char* cloudpath,char* wavepath);
const char* get_front_msg_from_subdir(); const char* get_front_msg_from_subdir();
char* find_mp_name_from_mp_id(const char* mp_id);
////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////
typedef struct { typedef struct {