You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include <signal.h>
#include <sqlite3.h>
#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> 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); }
|