#include #include #include "appbase/appbase.hpp" #include "appconfig/appconfig.hpp" #include "service/app_core.hpp" // #include "appconfig/appconfig.hpp" #include "appconfig/basic/zappversion.hpp" using namespace iflytop; using namespace core; using namespace std; namespace iflytop { using namespace iflytop; using namespace core; using namespace std; class Main { THISCLASS(Main); private: unique_ptr thread; private: int main(int argc, char *argv[]); public: static Main *g_main; static void _onsignal(int signo) { g_main->onsignal(signo); } void onsignal(int signo); public: Main(/* args */) {} ~Main() {} void run(int argc, char *argv[]); void dosystem(string order, bool dump) { if (dump) logger->info("{}", order); system(order.c_str()); } }; }; // namespace iflytop /******************************************************************************* * MAIN => MAIN * *******************************************************************************/ Main *Main::g_main; extern "C" { json build_default_logger_cfg() { json config = json::array(); json infologger; infologger["name"] = "infologger"; infologger["type"] = "rotating_file_sink_mt"; infologger["filename"] = "logs/infolog.log"; infologger["max_file_size"] = 10485760; // 10MB infologger["max_files"] = 30; infologger["rotate_on_open"] = false; infologger["level"] = 2; // info level config.push_back(infologger); json debuglogger; debuglogger["name"] = "debuglogger"; debuglogger["type"] = "rotating_file_sink_mt"; debuglogger["filename"] = "logs/debuglog.log"; debuglogger["max_file_size"] = 10485760; // 10MB debuglogger["max_files"] = 30; debuglogger["rotate_on_open"] = false; debuglogger["level"] = 1; // info level config.push_back(debuglogger); json terminal; terminal["name"] = "terminal"; terminal["type"] = "stdout_color_sink_mt"; config.push_back(terminal); json h2o2SensorDataMgr; h2o2SensorDataMgr["name"] = "H2O2SensorDataMgr"; h2o2SensorDataMgr["level"] = 1; // info level config.push_back(h2o2SensorDataMgr); json zsCanProtocolCom; zsCanProtocolCom["name"] = "ZSCanProtocolCom"; zsCanProtocolCom["level"] = 1; // info level config.push_back(zsCanProtocolCom); json frontMsgProcesser; frontMsgProcesser["name"] = "FrontMsgProcesser"; frontMsgProcesser["level"] = 1; // info level config.push_back(frontMsgProcesser); json iflytopFrontEndService; iflytopFrontEndService["name"] = "IflytopFrontEndService"; iflytopFrontEndService["level"] = 1; // info level config.push_back(iflytopFrontEndService); json root; root["name"] = "root"; root["type"] = "logger"; root["level"] = 2; // info level root["sinks"] = json::array(); root["sinks"].push_back("terminal"); root["sinks"].push_back("infologger"); root["sinks"].push_back("debuglogger"); config.push_back(root); return config; } int main(int argc, char *argv[]) { spdlog::flush_on(spdlog::level::debug); string config = build_default_logger_cfg().dump(2); SpdLoggerFactory::Instance().initialize(config); Main main; Main::g_main = &main; main.run(argc, argv); } } namespace iflytop {} void Main::onsignal(int signo) { exit(0); } void Main::run(int argc, char *argv[]) { // ::signal(SIGINT, Main::_onsignal); thread.reset(new Thread("main", [&]() { exit(main(argc, argv)); })); while (true) sleep(1000); } int Main::main(int argc, char *argv[]) { /** * @brief 系统初始化 */ logger->info("system setup start."); logger->info("#"); logger->info("# company:{}", "ifytop"); logger->info("# version:{}", VERSION); logger->info("# project:{}", PROJECT_NAME); logger->info("#"); logger->info("build {}.....", "Config"); // logger->info("VolumeConvertor::largeSpaceParam:{}", VolumeConvertor(VolumeConvertor::largeSpaceParam).getFullVolumeG()); // logger->info("VolumeConvertor::smallSpaceParam:{}", VolumeConvertor(VolumeConvertor::smallSpaceParam).getFullVolumeG()); // logger->info("VolumeConvertor::pipeParam:{}", VolumeConvertor(VolumeConvertor::pipeParam).getFullVolumeG()); // 构造MainControlService BUILD_AND_REG_SERRVICE(AppCore); logger->info("system setup end."); while (true) sleep(1000); }