add log in ggio
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -57,6 +60,9 @@ public:
|
|||||||
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存储路径 时间
|
||||||
|
|||||||
@@ -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;//防止崩溃
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user