modify log4 function and add data trace function

This commit is contained in:
lnk
2026-03-06 16:27:58 +08:00
parent d5916f5559
commit 748f8481bc
9 changed files with 888 additions and 424 deletions

View File

@@ -1167,9 +1167,13 @@ std::string prepare_update(const std::string& code_str, const terminal& json_dat
add_indent(xmlStream, indentLevel);
xmlStream << "<processNo>" << json_data.processNo << "</processNo>" << std::endl;
//lnk20250305
add_indent(xmlStream, indentLevel);
xmlStream << "<devKey>" << json_data.dev_key << "</devKey>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<loglevel>" << json_data.log_level << "</loglevel>" << std::endl;
// monitorData 部分
for (int i = 0; json_data.line[i].monitor_id[0] != '\0'; i++) {
const monitor& monitor = json_data.line[i];
@@ -1202,6 +1206,9 @@ std::string prepare_update(const std::string& code_str, const terminal& json_dat
add_indent(xmlStream, indentLevel);
xmlStream << "<status>" << monitor.status << "</status>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<loglevel>" << monitor.log_level << "</loglevel>" << std::endl;
indentLevel--;
add_indent(xmlStream, indentLevel);
xmlStream << "</monitorData>" << std::endl;
@@ -1376,7 +1383,7 @@ int parse_log(const std::string& json_str) {
return 1;
}
std::string logtype = logtypestr->valuestring;
int logtype = logtypestr->valueint;
// 获取 frontType 字段
cJSON* frontTypestr = cJSON_GetObjectItem(messageBody, "frontType");
@@ -1413,13 +1420,16 @@ int parse_log(const std::string& json_str) {
//校验数据
if((level == "terminal" || level == "measurepoint") &&
(grade == "NORMAL" || grade == "DEBUG") &&
(logtype == "com" || logtype == "data") &&
(!id.empty() && !is_blank(id))){
//开启开关
//开启日志临时开关
process_log_command(id, level, grade, logtype);
}
else if((level == "measurepoint") && (grade == "TRACE") && (!id.empty() && !is_blank(id))){ //数据追踪
//打开监测点数据追踪开关
process_trace_command(id,5); //5表示追踪次数
}
else{
std::cout << "type doesnt match" <<std::endl;
//记录warm
@@ -1611,6 +1621,25 @@ int parse_control(const std::string& json_str, const std::string& output_dir) {
else
std::strncpy(json_data.timestamp, "N/A", sizeof(json_data.timestamp) - 1);
//添加loglevel字段
cJSON* loglevel = cJSON_GetObjectItem(item, "loglevel"); // log_level
int tmp_level = -1;
// 先读取 loglevel
if (loglevel && loglevel->type == cJSON_Number) {
tmp_level = loglevel->valueint;
}
else if (loglevel && loglevel->type == cJSON_String) {
tmp_level = atoi(loglevel->valuestring);
}
// 判断是否合法 (0~3)
if (tmp_level >= 0 && tmp_level <= 3) {
json_data.log_level = tmp_level;
} else {
json_data.log_level = 1; // 默认日志级别
}
printf("terminal log_level: %d\n", json_data.log_level);
// monitorData 解析,填充到 line 数组中
cJSON* monitorData = cJSON_GetObjectItem(item, "monitorData");
if (monitorData != nullptr && monitorData->type == cJSON_Array) {
@@ -1626,6 +1655,27 @@ int parse_control(const std::string& json_str, const std::string& output_dir) {
else
std::strncpy(monitor_data.monitor_id, "N/A", sizeof(monitor_data.monitor_id) - 1);
//添加loglevel字段
cJSON* loglevel = cJSON_GetObjectItem(monitor_item, "loglevel"); // log_level
int tmp_level = -1;
// 先尝试读取 loglevel
if (loglevel && loglevel->type == cJSON_Number) {
tmp_level = loglevel->valueint;
}
else if (loglevel && loglevel->type == cJSON_String) {
tmp_level = atoi(loglevel->valuestring);
}
// 判断是否合法 (0~3)
if (tmp_level >= 0 && tmp_level <= 3) {
monitor_data.log_level = tmp_level;
}
else if (json_data.log_level >= 0 && json_data.log_level <= 3) { // 继承 terminal loglevel
monitor_data.log_level = json_data.log_level;
}
else {
monitor_data.log_level = 1; // 默认 warn
}
cJSON* monitor_name = cJSON_GetObjectItem(monitor_item, "name"); // monitor_name
if (monitor_name && monitor_name->type == cJSON_String)
std::strncpy(monitor_data.monitor_name, monitor_name->valuestring, sizeof(monitor_data.monitor_name) - 1);