// // Created by zhaohe on 19-5-31. // #pragma once #include #include #include #include #include #include #include #include #include // #include "spdlog/spdlog.h" // #include "spdlog/sinks/basic_file_sink.h" #include "spdlog/sinks/daily_file_sink.h" #include "spdlog/sinks/rotating_file_sink.h" #include "spdlog/sinks/stdout_color_sinks.h" namespace iflytop { namespace core { using namespace std; using namespace spdlog; typedef shared_ptr logger_t; #define ENABLE_LOGGER(loggerName) \ public: \ iflytop::core::logger_t logger = iflytop::core::SpdLoggerFactory::Instance().createLogger(#loggerName); \ \ private: #define CREATE_LOGGER(loggerName) iflytop::core::SpdLoggerFactory::Instance().createLogger(#loggerName) #define GET_LOGGER(loggerName) iflytop::core::SpdLoggerFactory::Instance().createLogger(#loggerName) class SpdLoggerFactory { SpdLoggerFactory() {}; std::mutex createLogger_lock; atomic_bool initializeLogger = {false}; set s_loggerNames; public: static SpdLoggerFactory& Instance() { static SpdLoggerFactory factory; return factory; } shared_ptr createLogger(string loggerName); set loggerNames(); private: void parseSphLogConfig(string path); }; } // namespace core } // namespace iflytop