cmvr-es/include/utils/base/logger.h
2025-08-21 13:56:39 +08:00

54 lines
1.5 KiB
C++

//
// Created by xtkuang on 2025/6/3.
//
#ifndef LOGGER_H
#define LOGGER_H
#include <sys/stat.h>
#include <unistd.h>
#include <glog/logging.h>
#include "rapidxml/xml_parser.h"
using namespace std;
inline bool initLogger(const XmlNode &cfg) {
google::InitGoogleLogging("cmvr_es");
std::string temp = cfg.getAttrString("dir");
if (temp.empty()) {
std::cerr << "Error: no directory specified" << std::endl;
return false;
} else {
// 判断目录是否存在
if (access(temp.c_str(), F_OK) != 0) {
// 创建目录
if (mkdir(temp.c_str(), 0755) != 0) {
std::cerr << "Failed to create directory: " << temp << std::endl;
return false;
}
}
FLAGS_log_dir = temp;
}
temp = cfg.getAttrDefault("level", "info");
if (temp == "info") {
FLAGS_minloglevel = google::INFO;
} else if (temp == "warn") {
FLAGS_minloglevel = google::WARNING;
} else if (temp == "error") {
FLAGS_minloglevel = google::ERROR;
} else if (temp == "fatal") {
FLAGS_minloglevel = google::FATAL;
}
FLAGS_logbufsecs = cfg.getAttrDefault("bufSize", 5);
FLAGS_max_log_size = cfg.getAttrDefault("logSize", 1024);
FLAGS_logtostderr = false;
FLAGS_alsologtostderr = true;
return true;
}
#endif //LOGGER_H