add mq log and add test type in test mod
This commit is contained in:
@@ -85,6 +85,16 @@ std::string extract_logger_id(const std::string& logger_name) {
|
||||
}
|
||||
return ""; // 没有找到 '.' 或 '.' 后为空
|
||||
}
|
||||
|
||||
std::string get_level_str(int level) {
|
||||
switch (level) {
|
||||
case 10000: return "DEBUG";
|
||||
case 20000: return "NORMAL"; // 或 "INFO" 根据你业务定义
|
||||
case 30000: return "WARN";
|
||||
case 40000: return "ERROR";
|
||||
default: return "UNKNOWN";
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
TypedLogger::TypedLogger() {}
|
||||
TypedLogger::TypedLogger(const Logger& l, int t) : logger(l), logtype(t) {}
|
||||
@@ -138,7 +148,7 @@ protected:
|
||||
<< "\",\"nodeId\":\"" << FRONT_INST
|
||||
<< "\",\"businessId\":\"" << extract_logger_id(logger_name)
|
||||
<< "\",\"level\":\"" << level_str
|
||||
<< "\",\"grade\":\"" << level
|
||||
<< "\",\"grade\":\"" << get_level_str(level)
|
||||
<< "\",\"logtype\":\"" << (logtype == LOGTYPE_COM ? "com" : "data")
|
||||
<< "\",\"frontType\":\"" << get_front_type_from_subdir()
|
||||
<< "\",\"log\":\"" << escape_json(msg) << "\"}";
|
||||
@@ -238,18 +248,16 @@ void process_log_command(const std::string& id, const std::string& level, const
|
||||
|
||||
}
|
||||
|
||||
Logger init_logger(const std::string& full_name, const std::string& file_dir, const std::string& base_file) {
|
||||
// 确保日志目录存在
|
||||
Logger init_logger(const std::string& full_name, const std::string& file_dir, const std::string& base_file, SharedAppenderPtr fileAppender) {
|
||||
create_directory_recursive(file_dir);
|
||||
|
||||
Logger logger = Logger::getInstance(full_name);
|
||||
std::string file_path = file_dir + "/" + base_file + ".log";
|
||||
|
||||
// 使用滚动日志(大小轮转),最多保留 2 个备份,每个最大 1MB
|
||||
SharedAppenderPtr fileAppender(new RollingFileAppender(file_path, 1 * 1024 * 1024, 2));
|
||||
|
||||
fileAppender->setLayout(std::auto_ptr<Layout>(
|
||||
new PatternLayout("%D{%Y-%m-%d %H:%M:%S} [%p] [%c] %m%n")));
|
||||
if (!fileAppender) {
|
||||
std::string file_path = file_dir + "/" + base_file + ".log";
|
||||
fileAppender = SharedAppenderPtr(new RollingFileAppender(file_path, 1 * 1024 * 1024, 2));
|
||||
fileAppender->setLayout(std::auto_ptr<Layout>(
|
||||
new PatternLayout("%D{%Y-%m-%d %H:%M:%S} [%p] [%c] %m%n")));
|
||||
}
|
||||
|
||||
SharedAppenderPtr sendAppender(new SendAppender());
|
||||
logger.addAppender(fileAppender);
|
||||
@@ -258,10 +266,18 @@ Logger init_logger(const std::string& full_name, const std::string& file_dir, co
|
||||
return logger;
|
||||
}
|
||||
|
||||
// 重载版本:无 Appender 传入时调用上面的实现
|
||||
log4cplus::Logger init_logger(const std::string& full_name,
|
||||
const std::string& file_dir,
|
||||
const std::string& base_file) {
|
||||
return init_logger(full_name, file_dir, base_file,
|
||||
log4cplus::SharedAppenderPtr()); // 空指针
|
||||
}
|
||||
|
||||
//进程的日志
|
||||
void init_logger_process() {
|
||||
std::string base_dir = std::string("/FeProject/") + subdir + "/processNo" + intToString(g_front_seg_index) + "/log";
|
||||
logger_map["process"] = TypedLogger(init_logger("process", base_dir, "process"), LOGTYPE_DATA);
|
||||
logger_map["process"] = TypedLogger(init_logger(std::string("process"), base_dir, std::string("process")), LOGTYPE_DATA);
|
||||
std::cout << "process log init ok" << std::endl;
|
||||
}
|
||||
|
||||
@@ -296,34 +312,55 @@ void init_loggers_bydevid(const char* dev_id)
|
||||
|
||||
std::string device_dir = base_dir + "/" + ip_str;
|
||||
|
||||
std::string device_key = std::string("terminal.") + dev_id;
|
||||
std::string device_key_c = std::string("terminal.") + dev_id + ".COM";
|
||||
std::string device_key_d = std::string("terminal.") + dev_id + ".DATA";
|
||||
|
||||
// 添加判断:终端日志 logger 是否已存在
|
||||
if (logger_map.find(ip_str + ".COM") == logger_map.end() &&
|
||||
logger_map.find(ip_str + ".DATA") == logger_map.end()) {
|
||||
if (logger_map.find(device_key_c) == logger_map.end() &&
|
||||
logger_map.find(device_key_d) == logger_map.end()) {
|
||||
|
||||
// 所有终端日志(com 和 data)写到同一个 device 日志文件中
|
||||
Logger device_logger = init_logger(device_key, device_dir, dev_id); //用终端id作为日志文件名
|
||||
logger_map[ip_str + ".COM"] = TypedLogger(device_logger, LOGTYPE_COM);
|
||||
logger_map[ip_str + ".DATA"] = TypedLogger(device_logger, LOGTYPE_DATA);
|
||||
std::string file_path_t = device_dir + "/" + dev_id + ".log";
|
||||
|
||||
// 共用一个 appender 实例
|
||||
SharedAppenderPtr device_appender = SharedAppenderPtr(new RollingFileAppender(file_path_t, 1 * 1024 * 1024, 2));
|
||||
device_appender->setLayout(std::auto_ptr<Layout>(new PatternLayout("%D{%Y-%m-%d %H:%M:%S} [%p] [%c] %m%n")));
|
||||
|
||||
Logger device_logger_c = init_logger(device_key_c, device_dir, dev_id, device_appender); //用终端id作为日志文件名
|
||||
Logger device_logger_d = init_logger(device_key_d, device_dir, dev_id, device_appender); //用终端id作为日志文件名
|
||||
logger_map[device_key_c] = TypedLogger(device_logger_c, LOGTYPE_COM);
|
||||
logger_map[device_key_d] = TypedLogger(device_logger_d, LOGTYPE_DATA);
|
||||
|
||||
DIY_WARNLOG(device_key_d.c_str(),"终端id:%s终端级日志初始化完毕", ied_usr->terminal_id);
|
||||
}
|
||||
|
||||
// 初始化监测点
|
||||
// 监测点 logger 名称格式:monitor.<mp_id>.COM / .DATA
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
if (strlen(ied_usr->LD_info[i].mp_id) > 0){
|
||||
std::ostringstream mon_key, mon_path, mon_name;
|
||||
mon_key << "monitor." << ied_usr->LD_info[i].mp_id;
|
||||
std::ostringstream mon_key_c, mon_key_d, mon_path, mon_name;
|
||||
mon_key_c << "monitor." << ied_usr->LD_info[i].mp_id << ".COM";
|
||||
mon_key_d << "monitor." << ied_usr->LD_info[i].mp_id << ".DATA";
|
||||
mon_path << device_dir << "/monitor" << i;//终端路径下用monitor+序号作为目录
|
||||
mon_name << ied_usr->LD_info[i].mp_id;
|
||||
|
||||
// 添加判断:监测点 logger 是否已存在
|
||||
if (logger_map.find(mon_key.str() + ".COM") == logger_map.end() &&
|
||||
logger_map.find(mon_key.str() + ".DATA") == logger_map.end()) {
|
||||
if (logger_map.find(mon_key_c.str()) == logger_map.end() &&
|
||||
logger_map.find(mon_key_d.str()) == logger_map.end()) {
|
||||
|
||||
Logger mon_logger = init_logger(mon_key.str(), mon_path.str(), mon_name.str());
|
||||
logger_map[mon_key.str() + ".COM"] = TypedLogger(mon_logger, LOGTYPE_COM);
|
||||
logger_map[mon_key.str() + ".DATA"] = TypedLogger(mon_logger, LOGTYPE_DATA);
|
||||
// 所有监测点日志(com 和 data)写到同一个 monitor 日志文件中
|
||||
std::string file_path_m = mon_path.str() + "/" + mon_name.str() + ".log";
|
||||
|
||||
// 共用一个 appender 实例
|
||||
SharedAppenderPtr monitor_appender = SharedAppenderPtr(new RollingFileAppender(file_path_m, 1 * 1024 * 1024, 2));
|
||||
monitor_appender->setLayout(std::auto_ptr<Layout>(new PatternLayout("%D{%Y-%m-%d %H:%M:%S} [%p] [%c] %m%n")));
|
||||
|
||||
Logger mon_logger_c = init_logger(mon_key_c.str(), mon_path.str(), mon_name.str(),monitor_appender);//用监测点号作为日志文件名
|
||||
Logger mon_logger_d = init_logger(mon_key_d.str(), mon_path.str(), mon_name.str(),monitor_appender);
|
||||
logger_map[mon_key_c.str()] = TypedLogger(mon_logger_c, LOGTYPE_COM);
|
||||
logger_map[mon_key_d.str()] = TypedLogger(mon_logger_d, LOGTYPE_DATA);
|
||||
|
||||
DIY_WARNLOG(mon_key_d.str().c_str(),"监测点:%s - id:%s监测点级日志初始化完毕", ied_usr->LD_info[i].name,ied_usr->LD_info[i].mp_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -356,42 +393,48 @@ void init_loggers() {
|
||||
|
||||
std::string device_dir = base_dir + "/" + ip_str;
|
||||
|
||||
std::string device_key = std::string("terminal.") + ied_usr->terminal_id;
|
||||
std::string device_key_c = std::string("terminal.") + ied_usr->terminal_id + ".COM";
|
||||
std::string device_key_d = std::string("terminal.") + ied_usr->terminal_id + ".DATA";
|
||||
|
||||
// 所有终端日志(com 和 data)写到同一个 device 日志文件中
|
||||
Logger device_logger = init_logger(device_key, device_dir, ied_usr->terminal_id); //用终端id作为日志文件名
|
||||
logger_map[device_key + ".COM"] = TypedLogger(device_logger, LOGTYPE_COM);
|
||||
logger_map[device_key + ".DATA"] = TypedLogger(device_logger, LOGTYPE_DATA);
|
||||
std::string file_path_t = device_dir + "/" + ied_usr->terminal_id + ".log";
|
||||
|
||||
char buf[256];
|
||||
//sprintf(buf, "终端id:%s终端级日志初始化完毕", ied_usr->terminal_id);
|
||||
//LOG4CPLUS_DEBUG(logger_map[device_key + ".DATA"].logger, buf);
|
||||
//format_log_msg(buf,sizeof(buf),"终端id:%s终端级日志初始化完毕", ied_usr->terminal_id);
|
||||
//log_debug(std::string(device_key + ".DATA").c_str(),buf);
|
||||
std::string full_key_t = device_key + ".DATA";
|
||||
DIY_WARNLOG(full_key_t.c_str(),"终端id:%s终端级日志初始化完毕", ied_usr->terminal_id);
|
||||
// 共用一个 appender 实例
|
||||
SharedAppenderPtr device_appender = SharedAppenderPtr(new RollingFileAppender(file_path_t, 1 * 1024 * 1024, 2));
|
||||
device_appender->setLayout(std::auto_ptr<Layout>(new PatternLayout("%D{%Y-%m-%d %H:%M:%S} [%p] [%c] %m%n")));
|
||||
|
||||
Logger device_logger_c = init_logger(device_key_c, device_dir, ied_usr->terminal_id, device_appender); //用终端id作为日志文件名
|
||||
Logger device_logger_d = init_logger(device_key_d, device_dir, ied_usr->terminal_id, device_appender); //用终端id作为日志文件名
|
||||
|
||||
logger_map[device_key_c] = TypedLogger(device_logger_c, LOGTYPE_COM);
|
||||
logger_map[device_key_d] = TypedLogger(device_logger_d, LOGTYPE_DATA);
|
||||
|
||||
DIY_WARNLOG(device_key_d.c_str(),"终端id:%s终端级日志初始化完毕", ied_usr->terminal_id);
|
||||
|
||||
// 初始化监测点
|
||||
// 监测点 logger 名称格式:monitor.<mp_id>.COM / .DATA
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
if (strlen(ied_usr->LD_info[i].mp_id) > 0){
|
||||
std::ostringstream mon_key, mon_path, mon_name;
|
||||
mon_key << "monitor." << ied_usr->LD_info[i].mp_id;
|
||||
std::ostringstream mon_key_c, mon_key_d, mon_path, mon_name;
|
||||
mon_key_c << "monitor." << ied_usr->LD_info[i].mp_id << ".COM";
|
||||
mon_key_d << "monitor." << ied_usr->LD_info[i].mp_id << ".DATA";
|
||||
|
||||
mon_path << device_dir << "/monitor" << i;//终端路径下用monitor+序号作为目录
|
||||
mon_name << ied_usr->LD_info[i].mp_id;
|
||||
|
||||
Logger mon_logger = init_logger(mon_key.str(), mon_path.str(), mon_name.str());
|
||||
std::string file_path_m = mon_path.str() + "/" + mon_name.str() + ".log";
|
||||
|
||||
logger_map[mon_key.str() + ".COM"] = TypedLogger(mon_logger, LOGTYPE_COM);
|
||||
logger_map[mon_key.str() + ".DATA"] = TypedLogger(mon_logger, LOGTYPE_DATA);
|
||||
// 共用一个 appender 实例
|
||||
SharedAppenderPtr monitor_appender = SharedAppenderPtr(new RollingFileAppender(file_path_m, 1 * 1024 * 1024, 2));
|
||||
monitor_appender->setLayout(std::auto_ptr<Layout>(new PatternLayout("%D{%Y-%m-%d %H:%M:%S} [%p] [%c] %m%n")));
|
||||
|
||||
//char buf[256];
|
||||
//sprintf(buf, "监测点id:%s监测点级日志初始化完毕", ied_usr->LD_info[i].mp_id);
|
||||
//LOG4CPLUS_DEBUG(logger_map[mon_key.str() + ".DATA"].logger, buf);
|
||||
//format_log_msg(buf,sizeof(buf),"监测点id:%s监测点级日志初始化完毕", ied_usr->LD_info[i].mp_id);
|
||||
//log_debug(std::string(mon_key.str() + ".DATA").c_str(),buf);
|
||||
std::string full_key_m = mon_key.str() + ".DATA";
|
||||
DIY_WARNLOG(full_key_m.c_str(),"监测点:%s - id:%s监测点级日志初始化完毕", ied_usr->LD_info[i].name,ied_usr->LD_info[i].mp_id);
|
||||
Logger mon_logger_c = init_logger(mon_key_c.str(), mon_path.str(), mon_name.str(), monitor_appender);
|
||||
Logger mon_logger_d = init_logger(mon_key_d.str(), mon_path.str(), mon_name.str(), monitor_appender);
|
||||
|
||||
logger_map[mon_key_c.str()] = TypedLogger(mon_logger_c, LOGTYPE_COM);
|
||||
logger_map[mon_key_d.str()] = TypedLogger(mon_logger_d, LOGTYPE_DATA);
|
||||
|
||||
DIY_WARNLOG(mon_key_d.str().c_str(),"监测点:%s - id:%s监测点级日志初始化完毕", ied_usr->LD_info[i].name,ied_usr->LD_info[i].mp_id);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user