finish diylog

This commit is contained in:
lnk
2025-05-29 16:36:34 +08:00
parent 10383ff567
commit 8d3ec192e8
6 changed files with 116 additions and 39 deletions

View File

@@ -1457,7 +1457,7 @@ int parse_rpt_log_ini()
//添加判断有的监测点没有cpuno为2直接申请了LD_info[1]没申请LD_info[0]
if(ied_usr->LD_info[cpuno].LD_name == NULL){
printf("this ld_info didn't palloc space ,maybe this ledger has problem!");
DIY_ERRORLOG("process","终端%s的监测点序号为%d的监测点没有在写入台账时申请空间,所以无法初始化报告,台账可能存在缺失,跳过这个监测点的报告初始化操作",ied_usr->terminal_id,cpuno + 1);
DIY_ERRORLOG("process","【ERROR】终端%s的监测点序号为%d的监测点没有在写入台账时申请空间,所以无法初始化报告,台账可能存在缺失,跳过这个监测点的报告初始化操作",ied_usr->terminal_id,cpuno + 1);
continue;//跳过防止崩溃
}
@@ -1799,18 +1799,18 @@ int parse_ledger_update_xml(trigger_update_xml_t* trigger_update_xml)
//加载一个文件的内容到数据结构
if (!load_ledger_update_from_xml(trigger_update_xml, filename)) {
std::cout << "read /etc/ledgerupdate/" << filename << " success..." << std::endl;
DIY_WARNLOG("process","前置的%s%d号进程 读取台账更新文件成功,开始更新台账", get_front_msg_from_subdir(), g_front_seg_index);
DIY_WARNLOG("process","【WARN】前置的%s%d号进程 读取台账更新文件成功,开始更新台账", get_front_msg_from_subdir(), g_front_seg_index);
}
//处理过的文件删除掉
if (std::remove(filename.c_str()) != 0) {
std::cerr << "Failed to remove file: " << filename << " Error: " << strerror(errno) << std::endl;
DIY_ERRORLOG("process","前置的%s%d号进程 删除已读取的台账更新文件失败!请检查", get_front_msg_from_subdir(), g_front_seg_index);
DIY_ERRORLOG("process","【ERROR】前置的%s%d号进程 删除已读取的台账更新文件失败!请检查台账更新文件是否残留在/FeProject/etc/ledgerupdate", get_front_msg_from_subdir(), g_front_seg_index);
return APR_EGENERAL;
}
else{
std::cout << "remove file: " << filename << " success..." << std::endl;
DIY_INFOLOG("process","前置的%s%d号进程 删除已读取的台账更新文件成功", get_front_msg_from_subdir(), g_front_seg_index);
DIY_INFOLOG("process","【NORMAL】前置的%s%d号进程 删除已读取的台账更新文件成功", get_front_msg_from_subdir(), g_front_seg_index);
}
}
}
@@ -1990,7 +1990,7 @@ int parse_3s_xml(trigger_3s_xml_t* trigger_3s_xml)
printf("/etc/trigger3s/*.xml success...\n");
DIY_WARNLOG("process","前置读取实时数据触发文件成功即将注册实时数据报告");
DIY_WARNLOG("process","【WARN】前置读取实时数据触发文件成功,即将注册实时数据报告");
return APR_SUCCESS;
}
@@ -2235,7 +2235,7 @@ int parse_recall_xml(recall_xml_t* recall_xml, char* id)
QDir dir(cfg_dir);
if (!dir.exists()) {
qDebug() << "folder does not exist!";
DIY_ERRORLOG("process","前置的%s%d号进程 无法解析补招文件,补招文件路径/FeProject/etc/recall/不存在", get_front_msg_from_subdir(), g_front_seg_index);
DIY_ERRORLOG("process","【ERROR】前置的%s%d号进程 无法解析补招文件,补招文件路径/FeProject/etc/recall/不存在", get_front_msg_from_subdir(), g_front_seg_index);
return false;
}
//指定文件后缀名,可指定多种类型
@@ -2251,7 +2251,7 @@ int parse_recall_xml(recall_xml_t* recall_xml, char* id)
if (!file.open(QIODevice::ReadOnly))
{
qDebug() << "file.open error";
DIY_ERRORLOG("process","前置的%s%d号进程 无法打开补招文件%s", get_front_msg_from_subdir(), g_front_seg_index,qstrRecallPath.toStdString().c_str());
DIY_ERRORLOG("process","【ERROR】前置的%s%d号进程 无法打开补招文件%s", get_front_msg_from_subdir(), g_front_seg_index,qstrRecallPath.toStdString().c_str());
continue; //以只读方式打开
}
bool ret = doc.setContent(&file);
@@ -2259,7 +2259,7 @@ int parse_recall_xml(recall_xml_t* recall_xml, char* id)
if (!ret)
{
qDebug() << "doc.setContent error";
DIY_ERRORLOG("process","前置的%s%d号进程 无法解析补招文件%s,补招内容无效", get_front_msg_from_subdir(), g_front_seg_index,qstrRecallPath.toStdString().c_str());
DIY_ERRORLOG("process","【ERROR】前置的%s%d号进程 无法解析补招文件%s,补招内容无效", get_front_msg_from_subdir(), g_front_seg_index,qstrRecallPath.toStdString().c_str());
continue;
}
//将文件内容读到doc中
@@ -2728,7 +2728,7 @@ void Cout_account_information() {
}
/// <summary>
/// 删除过期的xml
/// 删除过期的xmllnk:多个进程并发删除导致的失败不会影响进程
/// </summary>
void DeletcRecallXml() {
QString cfg_dir = QString("../")/*+QString::fromAscii(subdir)*/ + QString("etc/recall");
@@ -2738,7 +2738,7 @@ void DeletcRecallXml() {
QDir dir(cfg_dir);
if (!dir.exists()) {
qDebug() << "folder does not exist!";
DIY_ERRORLOG("process","前置的%s%d号进程 删除旧的补招文件失败,补招文件路径/FeProject/etc/recall/不存在", get_front_msg_from_subdir(), g_front_seg_index);
DIY_ERRORLOG("process","【ERROR】前置的%s%d号进程 删除旧的补招文件失败,补招文件路径/FeProject/etc/recall/不存在", get_front_msg_from_subdir(), g_front_seg_index);
return;
}
QStringList filter(file_name);
@@ -2753,7 +2753,7 @@ void DeletcRecallXml() {
if (fileInfo.lastModified() < saveDaysAgo) {
QFile::remove(fileInfo.absoluteFilePath());
DIY_INFOLOG("process","前置的%s%d号进程 删除超过两天的补招文件", get_front_msg_from_subdir(), g_front_seg_index);
DIY_INFOLOG("process","【NORMAL】前置的%s%d号进程 删除超过两天的补招文件", get_front_msg_from_subdir(), g_front_seg_index);
}
}
@@ -2770,7 +2770,7 @@ void CreateRecallXml()
{
printf("insert ID_CJournalRecall_Map\n");
DIY_INFOLOG("process","前置的%s%d号进程 开始写入补招文件", get_front_msg_from_subdir(), g_front_seg_index);
DIY_INFOLOG("process","【NORMAL】前置的%s%d号进程 开始写入补招文件", get_front_msg_from_subdir(), g_front_seg_index);
QMap<QString, QList<CJournalRecall> > ID_CJournalRecall_Map;
@@ -2803,7 +2803,7 @@ void CreateRecallXml()
if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
printf("补招查询完成,打开%s失败,无法写入线路补招配置!\n", qstrRecallPath.toAscii().data());
DIY_ERRORLOG("process","前置的%s%d号进程 无法将补招文件写入补招文件路径/FeProject/etc/recall/", get_front_msg_from_subdir(), g_front_seg_index);
DIY_ERRORLOG("process","【ERROR】前置的%s%d号进程 无法将补招文件写入补招文件路径/FeProject/etc/recall/", get_front_msg_from_subdir(), g_front_seg_index);
QMap<QString, QList<CJournalRecall> >().swap(ID_CJournalRecall_Map);
return;
@@ -3609,7 +3609,25 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
root = cJSON_Parse(ptr); //json格式序列化
if (root != NULL) {
break; // 解析成功,跳出循环
//添加解析
cJSON* codeItem = cJSON_GetObjectItem(root, "code");
cJSON* msgItem = cJSON_GetObjectItem(root, "msg");
std::string code = (codeItem && codeItem->type == cJSON_String) ? codeItem->valuestring : "not found";
std::string msg = (msgItem && msgItem->type == cJSON_String) ? msgItem->valuestring : "not found";
std::cout << "code: " << code << std::endl;
std::cout << "msg: " << msg << std::endl;
cJSON* data = cJSON_GetObjectItem(root, "data");
if (data && data->type == cJSON_Array) {
int data_size = cJSON_GetArraySize(data);
std::cout << "data_size " << data_size << std::endl;
if (data_size > 0) {
break; // 成功解析并非空数组
}
}
std::cerr << "data 无效或为空数组,重试" << std::endl;
DIY_ERRORLOG("process","【ERROR】前置从web接口中获取的台账信息为空或者无效信息无法解析,请核对前置使用的入参信息:%s",parm.c_str());
}
}
@@ -3632,11 +3650,29 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
if (ledger != NULL) {
root = cJSON_Parse(ledger);
if (root != NULL) {
free(ledger);
break; // 本地台账成功解析
//解析台账
cJSON* codeItem = cJSON_GetObjectItem(root, "code");
cJSON* msgItem = cJSON_GetObjectItem(root, "msg");
std::string code = (codeItem && codeItem->type == cJSON_String) ? codeItem->valuestring : "not found";
std::string msg = (msgItem && msgItem->type == cJSON_String) ? msgItem->valuestring : "not found";
std::cout << "code: " << code << std::endl;
std::cout << "msg: " << msg << std::endl;
cJSON* data = cJSON_GetObjectItem(root, "data");
if (data && data->type == cJSON_Array) {
int data_size = cJSON_GetArraySize(data);
std::cout << "data_size " << data_size << std::endl;
if (data_size > 0) {
free(ledger);
break; // 本地台账解析成功且数组非空
}
}
DIY_ERRORLOG("process","【ERROR】前置从本地台账中获取的台账信息为空或者无效信息无法解析,请核对前置使用的入参信息:%s",parm.c_str());
}
free(ledger); // 释放内容
free(ledger); // root==null释放内容
}
// 本地文件解析仍失败,等待 5 分钟后再重试
@@ -3662,7 +3698,7 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
// 获取 "data" 数组
cJSON* data = cJSON_GetObjectItem(root, "data");
if (!data || data->type != cJSON_Array) {
if (!data || data->type != cJSON_Array) {//不可能
std::cerr << "Error: 'data' is not an array." << std::endl;
cJSON_Delete(root);
free(ptr);
@@ -3673,7 +3709,7 @@ int terminal_ledger_web(QMap<QString, terminal_dev*>* terminal_dev_map,
std::cout << "data_size " << data_size << std::endl;
if (data_size == 0) {
if (data_size == 0) {//不可能
std::cerr << "Error: 'data' array is empty." << std::endl;
cJSON_Delete(root);
free(ptr);
@@ -4212,7 +4248,7 @@ int parse_device_cfg_web()
isdelta_flag = 1; //存在一个监测点为角型接线则这个前置就要启动第二个配置列表
cout << "monitor_id" << monitor_id << "v_wiring_type:" << line_info.v_wiring_type << "is delta wiring:" << isdelta_flag << endl;
DIY_WARNLOG("process","前置连接的监测点 %s 是角形接线,对应终端为%s 终端类型是%s",line_info.mp_id,ied_usr->terminal_id,ied_usr->dev_type);
DIY_WARNLOG("process","【WARN】前置连接的监测点 %s 是角形接线,对应终端为%s 终端类型是%s",line_info.mp_id,ied_usr->terminal_id,ied_usr->dev_type);
}
strcpy(line_info.monitor_status, monitor_status);
@@ -5589,7 +5625,7 @@ int parse_rpt_log_ini_one(ied_t* ied)
//添加判断有的监测点没有cpuno为2直接申请了LD_info[2-1]没申请LD_info[0]
if(ied_usr->LD_info[cpuno].LD_name == NULL){
printf("this ld_info didn't palloc space ,maybe this ledger has problem!");
DIY_ERRORLOG("process","终端%s的监测点序号为%d的监测点没有在写入台账时申请空间,所以无法初始化报告,台账可能存在缺失,跳过这个监测点的报告初始化操作",ied_usr->terminal_id,cpuno + 1);
DIY_ERRORLOG("process","【ERROR】终端%s的监测点序号为%d的监测点没有在写入台账时申请空间,所以无法初始化报告,台账可能存在缺失,跳过这个监测点的报告初始化操作",ied_usr->terminal_id,cpuno + 1);
continue;//跳过防止崩溃
}