From 2829204b3fd5c7925e3b0fe846184645180e0a5d Mon Sep 17 00:00:00 2001 From: YuhangQ Date: Tue, 4 Apr 2023 09:29:26 +0000 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=BA=93=EF=BC=8C=E6=9B=B4=E5=A5=BD=E7=9A=84=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- light | Bin 1775040 -> 0 bytes run.sh | 2 +- src/distributed/leader.hpp | 25 +- src/distributed/worker.hpp | 17 +- src/light.hpp | 4 +- src/main.cpp | 3 +- src/solve.cpp | 33 +- src/utils/easylogging++.cc | 3120 ++++++++++++++++++++++++ src/utils/easylogging++.h | 4576 ++++++++++++++++++++++++++++++++++++ src/workers/basekissat.cpp | 2 +- src/workers/sharer.cpp | 4 +- 12 files changed, 7755 insertions(+), 35 deletions(-) delete mode 100755 light create mode 100644 src/utils/easylogging++.cc create mode 100644 src/utils/easylogging++.h diff --git a/.gitignore b/.gitignore index 9e16ab6..2b0dc86 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ build .nfs* -*.o \ No newline at end of file +*.o +myeasylog.log +light \ No newline at end of file diff --git a/light b/light deleted file mode 100755 index ea13bee02b975849138c10c99c0e54f6afb16982..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1775040 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 h`U94*x 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�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 H9p06E*!;c(D&JHG3ALT1_vX6l+W@JU`;O6 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 z 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≶JEuGSFHI8xUxaGJ2!Hy~A&T$IGH! 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 z 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%0DMt+lAYPhdq;83W*?r?d~I9pYetuGwZv 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 - printf("c [leader] preprocess(simplify) input data\n"); + LOG(INFO) << "c [leader] preprocess(simplify) input data"; // 进行化简 auto pre = new preprocess(); @@ -33,7 +40,7 @@ void leader_main(light* S, int num_procs, int rank) { // preprocess 证明了UNSAT 则不需要启动云计算 if(!start) { - printf("UNSAT!!!!!! by preprocess\n"); + LOGGER->info("UNSAT!!!!!! by preprocess"); return; } @@ -50,7 +57,7 @@ void leader_main(light* S, int num_procs, int rank) { const auto& str_ref = ss.str(); char* cstr = const_cast(str_ref.c_str()); - printf("c [leader] hand out length of cnf instance to all nodes\n"); + LOGGER->info("hand out length of cnf instance to all nodes"); int cnf_length = str_ref.size(); @@ -60,13 +67,13 @@ void leader_main(light* S, int num_procs, int rank) { MPI_Barrier(MPI_COMM_WORLD); - printf("c [leader] hand out cnf instance to all nodes\n"); + LOGGER->info("hand out cnf instance to all nodes"); MPI_Bcast(cstr, cnf_length, MPI_CHAR, 0, MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); - printf("c [leader] hand out done!\n"); + LOGGER->info("hand out done!"); int is_sat; MPI_Request solved; @@ -80,7 +87,7 @@ void leader_main(light* S, int num_procs, int rank) { auto clk_now = std::chrono::high_resolution_clock::now(); int solve_time = std::chrono::duration_cast(clk_now - clk_st).count(); if (solve_time >= S->opt->times) { - printf("c [leader] solve time out\n"); + LOGGER->info("solve time out"); break; } @@ -100,8 +107,8 @@ void leader_main(light* S, int num_procs, int rank) { // send signal for getting solution(model) when sat if(is_sat) { - printf("recive model size: %d\n", pre->vars); - printf("SAT!!!!!!\n"); + LOGGER->info("recived model size: %v", pre->vars); + LOGGER->info("SAT!!!!!!"); MPI_Send(NULL, 0, MPI_INT, status.MPI_SOURCE, MODEL_REPORT_TAG, MPI_COMM_WORLD); int* sol = new int[pre->vars]; @@ -114,7 +121,7 @@ void leader_main(light* S, int num_procs, int rank) { delete []sol; } else { - printf("UNSAT!!!!!!\n"); + LOGGER->info("UNSAT!!!!!!"); } break; } diff --git a/src/distributed/worker.hpp b/src/distributed/worker.hpp index 28fb3cf..c3161ef 100644 --- a/src/distributed/worker.hpp +++ b/src/distributed/worker.hpp @@ -6,6 +6,7 @@ #include "../light.hpp" #include "../utils/cmdline.h" +#include "../utils/easylogging++.h" #include "../paras.hpp" #include "comm_tag.h" @@ -13,11 +14,17 @@ void worker_main(light* S, int num_procs, int rank) { auto clk_st = std::chrono::high_resolution_clock::now(); + el::Configurations defaultConf; + char tmp_format[1024]; + sprintf(tmp_format, "c %%level [worker%d] %%msg", rank); + defaultConf.setGlobally(el::ConfigurationType::Format, tmp_format); + el::Loggers::reconfigureLogger("default", defaultConf); + // 阻塞接收初始化信号 int start; MPI_Recv(&start, 1, MPI_INT, 0, START_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if(!start) { - printf("c worker%d has no need to start\n", rank); + LOGGER->info("I has no need to start"); return; } @@ -42,6 +49,8 @@ void worker_main(light* S, int num_procs, int rank) { int res = S->run(); + LOGGER->info("kissat exit with result: %v", res); + MPI_Request solved_request, model_request; MPI_Irecv(NULL, 0, MPI_INT, 0, MODEL_REPORT_TAG, MPI_COMM_WORLD, &model_request); @@ -57,21 +66,21 @@ void worker_main(light* S, int num_procs, int rank) { auto clk_now = std::chrono::high_resolution_clock::now(); int solve_time = std::chrono::duration_cast(clk_now - clk_st).count(); if (solve_time >= S->opt->times) { - printf("c [worker%d] solve time out\n", rank); + LOGGER->info("solve time out"); break; } // when getting terminate signal if(MPI_Test(&S->terminal_request, &flag, MPI_STATUS_IGNORE) == MPI_SUCCESS && flag == 1) { - printf(">>>>>>> worker%d : terminate\n", rank); + LOGGER->info("getting terminate signal"); break; } // when getting model signal if(MPI_Test(&model_request, &flag, MPI_STATUS_IGNORE) == MPI_SUCCESS && flag == 1) { - printf(">>>>>>> worker%d : get send signal\n", rank); + LOGGER->info("getting send model signal"); // send model and break; MPI_Send(S->model.data, S->model.size(), MPI_INT, 0, MODEL_REPORT_TAG, MPI_COMM_WORLD); diff --git a/src/light.hpp b/src/light.hpp index a400e01..80acaeb 100644 --- a/src/light.hpp +++ b/src/light.hpp @@ -1,7 +1,7 @@ #ifndef _light_hpp_INCLUDED #define _light_hpp_INCLUDED - +#include "utils/easylogging++.h" #include "utils/parse.hpp" #include "preprocess/preprocess.hpp" #include "paras.hpp" @@ -14,6 +14,8 @@ #include typedef long long ll; +#define LOGGER el::Loggers::getLogger("default") + class basesolver; class sharer; diff --git a/src/main.cpp b/src/main.cpp index c30c53d..dd26bc7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -11,8 +11,9 @@ #include "distributed/leader.hpp" #include "distributed/worker.hpp" -int main(int argc, char **argv) { +INITIALIZE_EASYLOGGINGPP +int main(int argc, char **argv) { int num_procs, rank; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &num_procs); diff --git a/src/solve.cpp b/src/solve.cpp index a36b5c2..44d88a2 100644 --- a/src/solve.cpp +++ b/src/solve.cpp @@ -7,6 +7,7 @@ #include #include #include "mpi.h" +#include "utils/easylogging++.h" auto clk_st = std::chrono::high_resolution_clock::now(); char* worker_sign = ""; @@ -29,22 +30,22 @@ void * solve_worker(void *arg) { while (!terminated) { int res = sq->solve(); if (sq->controller->opt->DPS) { - printf("c %d solved, res is %d\n", sq->id, res); + //printf("c %d solved, res is %d\n", sq->id, res); if (res) { terminated = 1; result = res; - printf("c %d solved 1\n", sq->id); + //printf("c %d solved 1\n", sq->id); sq->internal_terminate(); - printf("c %d solved 2\n", sq->id); + //printf("c %d solved 2\n", sq->id); sq->controller->update_winner(sq->id, sq->period); - printf("c %d solved 3\n", sq->id); + //printf("c %d solved 3\n", sq->id); if (res == 10) sq->get_model(sq->model); } - printf("c %d really solved, period is %d\n", sq->id, sq->period); + //printf("c %d really solved, period is %d\n", sq->id, sq->period); } else { if (res && !terminated) { - printf("c result: %d, winner is %d, winner run %d confs\n", res, sq->id, sq->get_conflicts()); + //printf("c result: %d, winner is %d, winner run %d confs\n", res, sq->id, sq->get_conflicts()); terminated = 1; sq->controller->terminate_workers(); result = res; @@ -52,7 +53,7 @@ void * solve_worker(void *arg) { winner_conf = sq->get_conflicts(); if (res == 10) sq->get_model(sq->model); } - printf("get result %d with res %d\n", sq->id, res); + //printf("get result %d with res %d\n", sq->id, res); } } return NULL; @@ -113,7 +114,7 @@ void light::diversity_workers() { } void light::terminate_workers() { - printf("c controller reach limit\n"); + // printf("c controller reach limit\n"); for (int i = 0; i < OPT(threads); i++) { if (OPT(share) == 1 && OPT(DPS) == 1) workers[i]->external_terminate(); @@ -139,7 +140,9 @@ void light::parse_input() { } int light::solve() { - printf("c -----------------solve start----------------------\n"); + // printf("c -----------------solve start----------------------\n"); + LOG(INFO) << "solve start"; + pthread_t *ptr = new pthread_t[OPT(threads)]; for (int i = 0; i < OPT(threads); i++) { pthread_create(&ptr[i], NULL, solve_worker, workers[i]); @@ -166,23 +169,23 @@ int light::solve() { terminate_workers(); } } - printf("ending solve\n"); + // printf("ending solve\n"); // terminate_workers(); //important, need combine nps/dps !!!!!!!!!!!!!!!! for (int i = 0; i < OPT(threads); i++) { pthread_join(ptr[i], NULL); } - printf("ending join\n"); + // printf("ending join\n"); if (result == 10) workers[winner_id]->model.copyTo(model); auto clk_now = std::chrono::high_resolution_clock::now(); double solve_time = std::chrono::duration_cast(clk_now - clk_sol_st).count(); solve_time = 0.001 * solve_time; - printf("c solve time: %.2lf\nwinner is %d, period is %d\n", solve_time, winner_id, winner_period); - for (int i = 0; i < OPT(threads); i++) { - printf("c thread %d waiting time: %.2lf\n", i, workers[i]->get_waiting_time()); - } + // printf("c solve time: %.2lf\nwinner is %d, period is %d\n", solve_time, winner_id, winner_period); + // for (int i = 0; i < OPT(threads); i++) { + // printf("c thread %d waiting time: %.2lf\n", i, workers[i]->get_waiting_time()); + // } delete []ptr; return result; } diff --git a/src/utils/easylogging++.cc b/src/utils/easylogging++.cc new file mode 100644 index 0000000..4a8d927 --- /dev/null +++ b/src/utils/easylogging++.cc @@ -0,0 +1,3120 @@ +// +// Bismillah ar-Rahmaan ar-Raheem +// +// Easylogging++ v9.96.7 +// Cross-platform logging library for C++ applications +// +// Copyright (c) 2012-2018 Amrayn Web Services +// Copyright (c) 2012-2018 @abumusamq +// +// This library is released under the MIT Licence. +// https://github.com/amrayn/easyloggingpp/blob/master/LICENSE +// +// https://amrayn.com +// http://muflihun.com +// + +#include "easylogging++.h" + +#if defined(AUTO_INITIALIZE_EASYLOGGINGPP) +INITIALIZE_EASYLOGGINGPP +#endif + +namespace el { + +// el::base +namespace base { +// el::base::consts +namespace consts { + +// Level log values - These are values that are replaced in place of %level format specifier +// Extra spaces after format specifiers are only for readability purposes in log files +static const base::type::char_t* kInfoLevelLogValue = ELPP_LITERAL("INFO"); +static const base::type::char_t* kDebugLevelLogValue = ELPP_LITERAL("DEBUG"); +static const base::type::char_t* kWarningLevelLogValue = ELPP_LITERAL("WARNING"); +static const base::type::char_t* kErrorLevelLogValue = ELPP_LITERAL("ERROR"); +static const base::type::char_t* kFatalLevelLogValue = ELPP_LITERAL("FATAL"); +static const base::type::char_t* kVerboseLevelLogValue = + ELPP_LITERAL("VERBOSE"); // will become VERBOSE-x where x = verbose level +static const base::type::char_t* kTraceLevelLogValue = ELPP_LITERAL("TRACE"); +static const base::type::char_t* kInfoLevelShortLogValue = ELPP_LITERAL("I"); +static const base::type::char_t* kDebugLevelShortLogValue = ELPP_LITERAL("D"); +static const base::type::char_t* kWarningLevelShortLogValue = ELPP_LITERAL("W"); +static const base::type::char_t* kErrorLevelShortLogValue = ELPP_LITERAL("E"); +static const base::type::char_t* kFatalLevelShortLogValue = ELPP_LITERAL("F"); +static const base::type::char_t* kVerboseLevelShortLogValue = ELPP_LITERAL("V"); +static const base::type::char_t* kTraceLevelShortLogValue = ELPP_LITERAL("T"); +// Format specifiers - These are used to define log format +static const base::type::char_t* kAppNameFormatSpecifier = ELPP_LITERAL("%app"); +static const base::type::char_t* kLoggerIdFormatSpecifier = ELPP_LITERAL("%logger"); +static const base::type::char_t* kThreadIdFormatSpecifier = ELPP_LITERAL("%thread"); +static const base::type::char_t* kSeverityLevelFormatSpecifier = ELPP_LITERAL("%level"); +static const base::type::char_t* kSeverityLevelShortFormatSpecifier = ELPP_LITERAL("%levshort"); +static const base::type::char_t* kDateTimeFormatSpecifier = ELPP_LITERAL("%datetime"); +static const base::type::char_t* kLogFileFormatSpecifier = ELPP_LITERAL("%file"); +static const base::type::char_t* kLogFileBaseFormatSpecifier = ELPP_LITERAL("%fbase"); +static const base::type::char_t* kLogLineFormatSpecifier = ELPP_LITERAL("%line"); +static const base::type::char_t* kLogLocationFormatSpecifier = ELPP_LITERAL("%loc"); +static const base::type::char_t* kLogFunctionFormatSpecifier = ELPP_LITERAL("%func"); +static const base::type::char_t* kCurrentUserFormatSpecifier = ELPP_LITERAL("%user"); +static const base::type::char_t* kCurrentHostFormatSpecifier = ELPP_LITERAL("%host"); +static const base::type::char_t* kMessageFormatSpecifier = ELPP_LITERAL("%msg"); +static const base::type::char_t* kVerboseLevelFormatSpecifier = ELPP_LITERAL("%vlevel"); +static const char* kDateTimeFormatSpecifierForFilename = "%datetime"; +// Date/time +static const char* kDays[7] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; +static const char* kDaysAbbrev[7] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; +static const char* kMonths[12] = { "January", "February", "March", "April", "May", "June", "July", "August", + "September", "October", "November", "December" + }; +static const char* kMonthsAbbrev[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; +static const char* kDefaultDateTimeFormat = "%Y-%M-%d %H:%m:%s,%g"; +static const char* kDefaultDateTimeFormatInFilename = "%Y-%M-%d_%H-%m"; +static const int kYearBase = 1900; +static const char* kAm = "AM"; +static const char* kPm = "PM"; +// Miscellaneous constants + +static const char* kNullPointer = "nullptr"; +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED +static const base::type::VerboseLevel kMaxVerboseLevel = 9; +static const char* kUnknownUser = "unknown-user"; +static const char* kUnknownHost = "unknown-host"; + + +//---------------- DEFAULT LOG FILE ----------------------- + +#if defined(ELPP_NO_DEFAULT_LOG_FILE) +# if ELPP_OS_UNIX +static const char* kDefaultLogFile = "/dev/null"; +# elif ELPP_OS_WINDOWS +static const char* kDefaultLogFile = "nul"; +# endif // ELPP_OS_UNIX +#elif defined(ELPP_DEFAULT_LOG_FILE) +static const char* kDefaultLogFile = ELPP_DEFAULT_LOG_FILE; +#else +static const char* kDefaultLogFile = "myeasylog.log"; +#endif // defined(ELPP_NO_DEFAULT_LOG_FILE) + + +#if !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) +static const char* kDefaultLogFileParam = "--default-log-file"; +#endif // !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) +#if defined(ELPP_LOGGING_FLAGS_FROM_ARG) +static const char* kLoggingFlagsParam = "--logging-flags"; +#endif // defined(ELPP_LOGGING_FLAGS_FROM_ARG) +static const char* kValidLoggerIdSymbols = + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._"; +static const char* kConfigurationComment = "##"; +static const char* kConfigurationLevel = "*"; +static const char* kConfigurationLoggerId = "--"; +} +// el::base::utils +namespace utils { + +/// @brief Aborts application due with user-defined status +static void abort(int status, const std::string& reason) { + // Both status and reason params are there for debugging with tools like gdb etc + ELPP_UNUSED(status); + ELPP_UNUSED(reason); +#if defined(ELPP_COMPILER_MSVC) && defined(_M_IX86) && defined(_DEBUG) + // Ignore msvc critical error dialog - break instead (on debug mode) + _asm int 3 +#else + ::abort(); +#endif // defined(ELPP_COMPILER_MSVC) && defined(_M_IX86) && defined(_DEBUG) +} + +} // namespace utils +} // namespace base + +// el + +// LevelHelper + +const char* LevelHelper::convertToString(Level level) { + // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. + if (level == Level::Global) return "GLOBAL"; + if (level == Level::Debug) return "DEBUG"; + if (level == Level::Info) return "INFO"; + if (level == Level::Warning) return "WARNING"; + if (level == Level::Error) return "ERROR"; + if (level == Level::Fatal) return "FATAL"; + if (level == Level::Verbose) return "VERBOSE"; + if (level == Level::Trace) return "TRACE"; + return "UNKNOWN"; +} + +struct StringToLevelItem { + const char* levelString; + Level level; +}; + +static struct StringToLevelItem stringToLevelMap[] = { + { "global", Level::Global }, + { "debug", Level::Debug }, + { "info", Level::Info }, + { "warning", Level::Warning }, + { "error", Level::Error }, + { "fatal", Level::Fatal }, + { "verbose", Level::Verbose }, + { "trace", Level::Trace } +}; + +Level LevelHelper::convertFromString(const char* levelStr) { + for (auto& item : stringToLevelMap) { + if (base::utils::Str::cStringCaseEq(levelStr, item.levelString)) { + return item.level; + } + } + return Level::Unknown; +} + +void LevelHelper::forEachLevel(base::type::EnumType* startIndex, const std::function& fn) { + base::type::EnumType lIndexMax = LevelHelper::kMaxValid; + do { + if (fn()) { + break; + } + *startIndex = static_cast(*startIndex << 1); + } while (*startIndex <= lIndexMax); +} + +// ConfigurationTypeHelper + +const char* ConfigurationTypeHelper::convertToString(ConfigurationType configurationType) { + // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. + if (configurationType == ConfigurationType::Enabled) return "ENABLED"; + if (configurationType == ConfigurationType::Filename) return "FILENAME"; + if (configurationType == ConfigurationType::Format) return "FORMAT"; + if (configurationType == ConfigurationType::ToFile) return "TO_FILE"; + if (configurationType == ConfigurationType::ToStandardOutput) return "TO_STANDARD_OUTPUT"; + if (configurationType == ConfigurationType::SubsecondPrecision) return "SUBSECOND_PRECISION"; + if (configurationType == ConfigurationType::PerformanceTracking) return "PERFORMANCE_TRACKING"; + if (configurationType == ConfigurationType::MaxLogFileSize) return "MAX_LOG_FILE_SIZE"; + if (configurationType == ConfigurationType::LogFlushThreshold) return "LOG_FLUSH_THRESHOLD"; + return "UNKNOWN"; +} + +struct ConfigurationStringToTypeItem { + const char* configString; + ConfigurationType configType; +}; + +static struct ConfigurationStringToTypeItem configStringToTypeMap[] = { + { "enabled", ConfigurationType::Enabled }, + { "to_file", ConfigurationType::ToFile }, + { "to_standard_output", ConfigurationType::ToStandardOutput }, + { "format", ConfigurationType::Format }, + { "filename", ConfigurationType::Filename }, + { "subsecond_precision", ConfigurationType::SubsecondPrecision }, + { "milliseconds_width", ConfigurationType::MillisecondsWidth }, + { "performance_tracking", ConfigurationType::PerformanceTracking }, + { "max_log_file_size", ConfigurationType::MaxLogFileSize }, + { "log_flush_threshold", ConfigurationType::LogFlushThreshold }, +}; + +ConfigurationType ConfigurationTypeHelper::convertFromString(const char* configStr) { + for (auto& item : configStringToTypeMap) { + if (base::utils::Str::cStringCaseEq(configStr, item.configString)) { + return item.configType; + } + } + return ConfigurationType::Unknown; +} + +void ConfigurationTypeHelper::forEachConfigType(base::type::EnumType* startIndex, const std::function& fn) { + base::type::EnumType cIndexMax = ConfigurationTypeHelper::kMaxValid; + do { + if (fn()) { + break; + } + *startIndex = static_cast(*startIndex << 1); + } while (*startIndex <= cIndexMax); +} + +// Configuration + +Configuration::Configuration(const Configuration& c) : + m_level(c.m_level), + m_configurationType(c.m_configurationType), + m_value(c.m_value) { +} + +Configuration& Configuration::operator=(const Configuration& c) { + if (&c != this) { + m_level = c.m_level; + m_configurationType = c.m_configurationType; + m_value = c.m_value; + } + return *this; +} + +/// @brief Full constructor used to sets value of configuration +Configuration::Configuration(Level level, ConfigurationType configurationType, const std::string& value) : + m_level(level), + m_configurationType(configurationType), + m_value(value) { +} + +void Configuration::log(el::base::type::ostream_t& os) const { + os << LevelHelper::convertToString(m_level) + << ELPP_LITERAL(" ") << ConfigurationTypeHelper::convertToString(m_configurationType) + << ELPP_LITERAL(" = ") << m_value.c_str(); +} + +/// @brief Used to find configuration from configuration (pointers) repository. Avoid using it. +Configuration::Predicate::Predicate(Level level, ConfigurationType configurationType) : + m_level(level), + m_configurationType(configurationType) { +} + +bool Configuration::Predicate::operator()(const Configuration* conf) const { + return ((conf != nullptr) && (conf->level() == m_level) && (conf->configurationType() == m_configurationType)); +} + +// Configurations + +Configurations::Configurations(void) : + m_configurationFile(std::string()), + m_isFromFile(false) { +} + +Configurations::Configurations(const std::string& configurationFile, bool useDefaultsForRemaining, + Configurations* base) : + m_configurationFile(configurationFile), + m_isFromFile(false) { + parseFromFile(configurationFile, base); + if (useDefaultsForRemaining) { + setRemainingToDefault(); + } +} + +bool Configurations::parseFromFile(const std::string& configurationFile, Configurations* base) { + // We initial assertion with true because if we have assertion disabled, we want to pass this + // check and if assertion is enabled we will have values re-assigned any way. + bool assertionPassed = true; + ELPP_ASSERT((assertionPassed = base::utils::File::pathExists(configurationFile.c_str(), true)) == true, + "Configuration file [" << configurationFile << "] does not exist!"); + if (!assertionPassed) { + return false; + } + bool success = Parser::parseFromFile(configurationFile, this, base); + m_isFromFile = success; + return success; +} + +bool Configurations::parseFromText(const std::string& configurationsString, Configurations* base) { + bool success = Parser::parseFromText(configurationsString, this, base); + if (success) { + m_isFromFile = false; + } + return success; +} + +void Configurations::setFromBase(Configurations* base) { + if (base == nullptr || base == this) { + return; + } + base::threading::ScopedLock scopedLock(base->lock()); + for (Configuration*& conf : base->list()) { + set(conf); + } +} + +bool Configurations::hasConfiguration(ConfigurationType configurationType) { + base::type::EnumType lIndex = LevelHelper::kMinValid; + bool result = false; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + if (hasConfiguration(LevelHelper::castFromInt(lIndex), configurationType)) { + result = true; + } + return result; + }); + return result; +} + +bool Configurations::hasConfiguration(Level level, ConfigurationType configurationType) { + base::threading::ScopedLock scopedLock(lock()); +#if ELPP_COMPILER_INTEL + // We cant specify template types here, Intel C++ throws compilation error + // "error: type name is not allowed" + return RegistryWithPred::get(level, configurationType) != nullptr; +#else + return RegistryWithPred::get(level, configurationType) != nullptr; +#endif // ELPP_COMPILER_INTEL +} + +void Configurations::set(Level level, ConfigurationType configurationType, const std::string& value) { + base::threading::ScopedLock scopedLock(lock()); + unsafeSet(level, configurationType, value); // This is not unsafe anymore as we have locked mutex + if (level == Level::Global) { + unsafeSetGlobally(configurationType, value, false); // Again this is not unsafe either + } +} + +void Configurations::set(Configuration* conf) { + if (conf == nullptr) { + return; + } + set(conf->level(), conf->configurationType(), conf->value()); +} + +void Configurations::setToDefault(void) { + setGlobally(ConfigurationType::Enabled, std::string("true"), true); + setGlobally(ConfigurationType::Filename, std::string(base::consts::kDefaultLogFile), true); +#if defined(ELPP_NO_LOG_TO_FILE) + setGlobally(ConfigurationType::ToFile, std::string("false"), true); +#else + setGlobally(ConfigurationType::ToFile, std::string("true"), true); +#endif // defined(ELPP_NO_LOG_TO_FILE) + setGlobally(ConfigurationType::ToStandardOutput, std::string("true"), true); + setGlobally(ConfigurationType::SubsecondPrecision, std::string("3"), true); + setGlobally(ConfigurationType::PerformanceTracking, std::string("true"), true); + setGlobally(ConfigurationType::MaxLogFileSize, std::string("0"), true); + setGlobally(ConfigurationType::LogFlushThreshold, std::string("0"), true); + + setGlobally(ConfigurationType::Format, std::string("%datetime %level [%logger] %msg"), true); + set(Level::Debug, ConfigurationType::Format, + std::string("%datetime %level [%logger] [%user@%host] [%func] [%loc] %msg")); + // INFO and WARNING are set to default by Level::Global + set(Level::Error, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + set(Level::Fatal, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + set(Level::Verbose, ConfigurationType::Format, std::string("%datetime %level-%vlevel [%logger] %msg")); + set(Level::Trace, ConfigurationType::Format, std::string("%datetime %level [%logger] [%func] [%loc] %msg")); +} + +void Configurations::setRemainingToDefault(void) { + base::threading::ScopedLock scopedLock(lock()); +#if defined(ELPP_NO_LOG_TO_FILE) + unsafeSetIfNotExist(Level::Global, ConfigurationType::Enabled, std::string("false")); +#else + unsafeSetIfNotExist(Level::Global, ConfigurationType::Enabled, std::string("true")); +#endif // defined(ELPP_NO_LOG_TO_FILE) + unsafeSetIfNotExist(Level::Global, ConfigurationType::Filename, std::string(base::consts::kDefaultLogFile)); + unsafeSetIfNotExist(Level::Global, ConfigurationType::ToStandardOutput, std::string("true")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::SubsecondPrecision, std::string("3")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::PerformanceTracking, std::string("true")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::MaxLogFileSize, std::string("0")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + unsafeSetIfNotExist(Level::Debug, ConfigurationType::Format, + std::string("%datetime %level [%logger] [%user@%host] [%func] [%loc] %msg")); + // INFO and WARNING are set to default by Level::Global + unsafeSetIfNotExist(Level::Error, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + unsafeSetIfNotExist(Level::Fatal, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + unsafeSetIfNotExist(Level::Verbose, ConfigurationType::Format, std::string("%datetime %level-%vlevel [%logger] %msg")); + unsafeSetIfNotExist(Level::Trace, ConfigurationType::Format, + std::string("%datetime %level [%logger] [%func] [%loc] %msg")); +} + +bool Configurations::Parser::parseFromFile(const std::string& configurationFile, Configurations* sender, + Configurations* base) { + sender->setFromBase(base); + std::ifstream fileStream_(configurationFile.c_str(), std::ifstream::in); + ELPP_ASSERT(fileStream_.is_open(), "Unable to open configuration file [" << configurationFile << "] for parsing."); + bool parsedSuccessfully = false; + std::string line = std::string(); + Level currLevel = Level::Unknown; + std::string currConfigStr = std::string(); + std::string currLevelStr = std::string(); + while (fileStream_.good()) { + std::getline(fileStream_, line); + parsedSuccessfully = parseLine(&line, &currConfigStr, &currLevelStr, &currLevel, sender); + ELPP_ASSERT(parsedSuccessfully, "Unable to parse configuration line: " << line); + } + return parsedSuccessfully; +} + +bool Configurations::Parser::parseFromText(const std::string& configurationsString, Configurations* sender, + Configurations* base) { + sender->setFromBase(base); + bool parsedSuccessfully = false; + std::stringstream ss(configurationsString); + std::string line = std::string(); + Level currLevel = Level::Unknown; + std::string currConfigStr = std::string(); + std::string currLevelStr = std::string(); + while (std::getline(ss, line)) { + parsedSuccessfully = parseLine(&line, &currConfigStr, &currLevelStr, &currLevel, sender); + ELPP_ASSERT(parsedSuccessfully, "Unable to parse configuration line: " << line); + } + return parsedSuccessfully; +} + +void Configurations::Parser::ignoreComments(std::string* line) { + std::size_t foundAt = 0; + std::size_t quotesStart = line->find("\""); + std::size_t quotesEnd = std::string::npos; + if (quotesStart != std::string::npos) { + quotesEnd = line->find("\"", quotesStart + 1); + while (quotesEnd != std::string::npos && line->at(quotesEnd - 1) == '\\') { + // Do not erase slash yet - we will erase it in parseLine(..) while loop + quotesEnd = line->find("\"", quotesEnd + 2); + } + } + if ((foundAt = line->find(base::consts::kConfigurationComment)) != std::string::npos) { + if (foundAt < quotesEnd) { + foundAt = line->find(base::consts::kConfigurationComment, quotesEnd + 1); + } + *line = line->substr(0, foundAt); + } +} + +bool Configurations::Parser::isLevel(const std::string& line) { + return base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationLevel)); +} + +bool Configurations::Parser::isComment(const std::string& line) { + return base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationComment)); +} + +bool Configurations::Parser::isConfig(const std::string& line) { + std::size_t assignment = line.find('='); + return line != "" && + ((line[0] >= 'A' && line[0] <= 'Z') || (line[0] >= 'a' && line[0] <= 'z')) && + (assignment != std::string::npos) && + (line.size() > assignment); +} + +bool Configurations::Parser::parseLine(std::string* line, std::string* currConfigStr, std::string* currLevelStr, + Level* currLevel, + Configurations* conf) { + ConfigurationType currConfig = ConfigurationType::Unknown; + std::string currValue = std::string(); + *line = base::utils::Str::trim(*line); + if (isComment(*line)) return true; + ignoreComments(line); + *line = base::utils::Str::trim(*line); + if (line->empty()) { + // Comment ignored + return true; + } + if (isLevel(*line)) { + if (line->size() <= 2) { + return true; + } + *currLevelStr = line->substr(1, line->size() - 2); + *currLevelStr = base::utils::Str::toUpper(*currLevelStr); + *currLevelStr = base::utils::Str::trim(*currLevelStr); + *currLevel = LevelHelper::convertFromString(currLevelStr->c_str()); + return true; + } + if (isConfig(*line)) { + std::size_t assignment = line->find('='); + *currConfigStr = line->substr(0, assignment); + *currConfigStr = base::utils::Str::toUpper(*currConfigStr); + *currConfigStr = base::utils::Str::trim(*currConfigStr); + currConfig = ConfigurationTypeHelper::convertFromString(currConfigStr->c_str()); + currValue = line->substr(assignment + 1); + currValue = base::utils::Str::trim(currValue); + std::size_t quotesStart = currValue.find("\"", 0); + std::size_t quotesEnd = std::string::npos; + if (quotesStart != std::string::npos) { + quotesEnd = currValue.find("\"", quotesStart + 1); + while (quotesEnd != std::string::npos && currValue.at(quotesEnd - 1) == '\\') { + currValue = currValue.erase(quotesEnd - 1, 1); + quotesEnd = currValue.find("\"", quotesEnd + 2); + } + } + if (quotesStart != std::string::npos && quotesEnd != std::string::npos) { + // Quote provided - check and strip if valid + ELPP_ASSERT((quotesStart < quotesEnd), "Configuration error - No ending quote found in [" + << currConfigStr << "]"); + ELPP_ASSERT((quotesStart + 1 != quotesEnd), "Empty configuration value for [" << currConfigStr << "]"); + if ((quotesStart != quotesEnd) && (quotesStart + 1 != quotesEnd)) { + // Explicit check in case if assertion is disabled + currValue = currValue.substr(quotesStart + 1, quotesEnd - 1); + } + } + } + ELPP_ASSERT(*currLevel != Level::Unknown, "Unrecognized severity level [" << *currLevelStr << "]"); + ELPP_ASSERT(currConfig != ConfigurationType::Unknown, "Unrecognized configuration [" << *currConfigStr << "]"); + if (*currLevel == Level::Unknown || currConfig == ConfigurationType::Unknown) { + return false; // unrecognizable level or config + } + conf->set(*currLevel, currConfig, currValue); + return true; +} + +void Configurations::unsafeSetIfNotExist(Level level, ConfigurationType configurationType, const std::string& value) { + Configuration* conf = RegistryWithPred::get(level, configurationType); + if (conf == nullptr) { + unsafeSet(level, configurationType, value); + } +} + +void Configurations::unsafeSet(Level level, ConfigurationType configurationType, const std::string& value) { + Configuration* conf = RegistryWithPred::get(level, configurationType); + if (conf == nullptr) { + registerNew(new Configuration(level, configurationType, value)); + } else { + conf->setValue(value); + } + if (level == Level::Global) { + unsafeSetGlobally(configurationType, value, false); + } +} + +void Configurations::setGlobally(ConfigurationType configurationType, const std::string& value, + bool includeGlobalLevel) { + if (includeGlobalLevel) { + set(Level::Global, configurationType, value); + } + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + set(LevelHelper::castFromInt(lIndex), configurationType, value); + return false; // Do not break lambda function yet as we need to set all levels regardless + }); +} + +void Configurations::unsafeSetGlobally(ConfigurationType configurationType, const std::string& value, + bool includeGlobalLevel) { + if (includeGlobalLevel) { + unsafeSet(Level::Global, configurationType, value); + } + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + unsafeSet(LevelHelper::castFromInt(lIndex), configurationType, value); + return false; // Do not break lambda function yet as we need to set all levels regardless + }); +} + +// LogBuilder + +void LogBuilder::convertToColoredOutput(base::type::string_t* logLine, Level level) { + if (!m_termSupportsColor) return; + const base::type::char_t* resetColor = ELPP_LITERAL("\x1b[0m"); + if (level == Level::Error || level == Level::Fatal) + *logLine = ELPP_LITERAL("\x1b[31m") + *logLine + resetColor; + else if (level == Level::Warning) + *logLine = ELPP_LITERAL("\x1b[33m") + *logLine + resetColor; + else if (level == Level::Debug) + *logLine = ELPP_LITERAL("\x1b[32m") + *logLine + resetColor; + else if (level == Level::Info) + *logLine = ELPP_LITERAL("\x1b[36m") + *logLine + resetColor; + else if (level == Level::Trace) + *logLine = ELPP_LITERAL("\x1b[35m") + *logLine + resetColor; +} + +// Logger + +Logger::Logger(const std::string& id, base::LogStreamsReferenceMapPtr logStreamsReference) : + m_id(id), + m_typedConfigurations(nullptr), + m_parentApplicationName(std::string()), + m_isConfigured(false), + m_logStreamsReference(logStreamsReference) { + initUnflushedCount(); +} + +Logger::Logger(const std::string& id, const Configurations& configurations, + base::LogStreamsReferenceMapPtr logStreamsReference) : + m_id(id), + m_typedConfigurations(nullptr), + m_parentApplicationName(std::string()), + m_isConfigured(false), + m_logStreamsReference(logStreamsReference) { + initUnflushedCount(); + configure(configurations); +} + +Logger::Logger(const Logger& logger) { + base::utils::safeDelete(m_typedConfigurations); + m_id = logger.m_id; + m_typedConfigurations = logger.m_typedConfigurations; + m_parentApplicationName = logger.m_parentApplicationName; + m_isConfigured = logger.m_isConfigured; + m_configurations = logger.m_configurations; + m_unflushedCount = logger.m_unflushedCount; + m_logStreamsReference = logger.m_logStreamsReference; +} + +Logger& Logger::operator=(const Logger& logger) { + if (&logger != this) { + base::utils::safeDelete(m_typedConfigurations); + m_id = logger.m_id; + m_typedConfigurations = logger.m_typedConfigurations; + m_parentApplicationName = logger.m_parentApplicationName; + m_isConfigured = logger.m_isConfigured; + m_configurations = logger.m_configurations; + m_unflushedCount = logger.m_unflushedCount; + m_logStreamsReference = logger.m_logStreamsReference; + } + return *this; +} + +void Logger::configure(const Configurations& configurations) { + m_isConfigured = false; // we set it to false in case if we fail + initUnflushedCount(); + if (m_typedConfigurations != nullptr) { + Configurations* c = const_cast(m_typedConfigurations->configurations()); + if (c->hasConfiguration(Level::Global, ConfigurationType::Filename)) { + flush(); + } + } + base::threading::ScopedLock scopedLock(lock()); + if (m_configurations != configurations) { + m_configurations.setFromBase(const_cast(&configurations)); + } + base::utils::safeDelete(m_typedConfigurations); + m_typedConfigurations = new base::TypedConfigurations(&m_configurations, m_logStreamsReference); + resolveLoggerFormatSpec(); + m_isConfigured = true; +} + +void Logger::reconfigure(void) { + ELPP_INTERNAL_INFO(1, "Reconfiguring logger [" << m_id << "]"); + configure(m_configurations); +} + +bool Logger::isValidId(const std::string& id) { + for (std::string::const_iterator it = id.begin(); it != id.end(); ++it) { + if (!base::utils::Str::contains(base::consts::kValidLoggerIdSymbols, *it)) { + return false; + } + } + return true; +} + +void Logger::flush(void) { + ELPP_INTERNAL_INFO(3, "Flushing logger [" << m_id << "] all levels"); + base::threading::ScopedLock scopedLock(lock()); + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + flush(LevelHelper::castFromInt(lIndex), nullptr); + return false; + }); +} + +void Logger::flush(Level level, base::type::fstream_t* fs) { + if (fs == nullptr && m_typedConfigurations->toFile(level)) { + fs = m_typedConfigurations->fileStream(level); + } + if (fs != nullptr) { + fs->flush(); + std::unordered_map::iterator iter = m_unflushedCount.find(level); + if (iter != m_unflushedCount.end()) { + iter->second = 0; + } + Helpers::validateFileRolling(this, level); + } +} + +void Logger::initUnflushedCount(void) { + m_unflushedCount.clear(); + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + m_unflushedCount.insert(std::make_pair(LevelHelper::castFromInt(lIndex), 0)); + return false; + }); +} + +void Logger::resolveLoggerFormatSpec(void) const { + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + base::LogFormat* logFormat = + const_cast(&m_typedConfigurations->logFormat(LevelHelper::castFromInt(lIndex))); + base::utils::Str::replaceFirstWithEscape(logFormat->m_format, base::consts::kLoggerIdFormatSpecifier, m_id); + return false; + }); +} + +// el::base +namespace base { + +// el::base::utils +namespace utils { + +// File + +base::type::fstream_t* File::newFileStream(const std::string& filename) { + base::type::fstream_t *fs = new base::type::fstream_t(filename.c_str(), + base::type::fstream_t::out +#if !defined(ELPP_FRESH_LOG_FILE) + | base::type::fstream_t::app +#endif + ); +#if defined(ELPP_UNICODE) + std::locale elppUnicodeLocale(""); +# if ELPP_OS_WINDOWS + std::locale elppUnicodeLocaleWindows(elppUnicodeLocale, new std::codecvt_utf8_utf16); + elppUnicodeLocale = elppUnicodeLocaleWindows; +# endif // ELPP_OS_WINDOWS + fs->imbue(elppUnicodeLocale); +#endif // defined(ELPP_UNICODE) + if (fs->is_open()) { + fs->flush(); + } else { + base::utils::safeDelete(fs); + ELPP_INTERNAL_ERROR("Bad file [" << filename << "]", true); + } + return fs; +} + +std::size_t File::getSizeOfFile(base::type::fstream_t* fs) { + if (fs == nullptr) { + return 0; + } + // Since the file stream is appended to or truncated, the current + // offset is the file size. + std::size_t size = static_cast(fs->tellg()); + return size; +} + +bool File::pathExists(const char* path, bool considerFile) { + if (path == nullptr) { + return false; + } +#if ELPP_OS_UNIX + ELPP_UNUSED(considerFile); + struct stat st; + return (stat(path, &st) == 0); +#elif ELPP_OS_WINDOWS + DWORD fileType = GetFileAttributesA(path); + if (fileType == INVALID_FILE_ATTRIBUTES) { + return false; + } + return considerFile ? true : ((fileType & FILE_ATTRIBUTE_DIRECTORY) == 0 ? false : true); +#endif // ELPP_OS_UNIX +} + +bool File::createPath(const std::string& path) { + if (path.empty()) { + return false; + } + if (base::utils::File::pathExists(path.c_str())) { + return true; + } + int status = -1; + + char* currPath = const_cast(path.c_str()); + std::string builtPath = std::string(); +#if ELPP_OS_UNIX + if (path[0] == '/') { + builtPath = "/"; + } + currPath = STRTOK(currPath, base::consts::kFilePathSeparator, 0); +#elif ELPP_OS_WINDOWS + // Use secure functions API + char* nextTok_ = nullptr; + currPath = STRTOK(currPath, base::consts::kFilePathSeparator, &nextTok_); + ELPP_UNUSED(nextTok_); +#endif // ELPP_OS_UNIX + while (currPath != nullptr) { + builtPath.append(currPath); + builtPath.append(base::consts::kFilePathSeparator); +#if ELPP_OS_UNIX + status = mkdir(builtPath.c_str(), ELPP_LOG_PERMS); + currPath = STRTOK(nullptr, base::consts::kFilePathSeparator, 0); +#elif ELPP_OS_WINDOWS + status = _mkdir(builtPath.c_str()); + currPath = STRTOK(nullptr, base::consts::kFilePathSeparator, &nextTok_); +#endif // ELPP_OS_UNIX + } + if (status == -1) { + ELPP_INTERNAL_ERROR("Error while creating path [" << path << "]", true); + return false; + } + return true; +} + +std::string File::extractPathFromFilename(const std::string& fullPath, const char* separator) { + if ((fullPath == "") || (fullPath.find(separator) == std::string::npos)) { + return fullPath; + } + std::size_t lastSlashAt = fullPath.find_last_of(separator); + if (lastSlashAt == 0) { + return std::string(separator); + } + return fullPath.substr(0, lastSlashAt + 1); +} + +void File::buildStrippedFilename(const char* filename, char buff[], std::size_t limit) { + std::size_t sizeOfFilename = strlen(filename); + if (sizeOfFilename >= limit) { + filename += (sizeOfFilename - limit); + if (filename[0] != '.' && filename[1] != '.') { // prepend if not already + filename += 3; // 3 = '..' + STRCAT(buff, "..", limit); + } + } + STRCAT(buff, filename, limit); +} + +void File::buildBaseFilename(const std::string& fullPath, char buff[], std::size_t limit, const char* separator) { + const char *filename = fullPath.c_str(); + std::size_t lastSlashAt = fullPath.find_last_of(separator); + filename += lastSlashAt ? lastSlashAt+1 : 0; + std::size_t sizeOfFilename = strlen(filename); + if (sizeOfFilename >= limit) { + filename += (sizeOfFilename - limit); + if (filename[0] != '.' && filename[1] != '.') { // prepend if not already + filename += 3; // 3 = '..' + STRCAT(buff, "..", limit); + } + } + STRCAT(buff, filename, limit); +} + +// Str + +bool Str::wildCardMatch(const char* str, const char* pattern) { + while (*pattern) { + switch (*pattern) { + case '?': + if (!*str) + return false; + ++str; + ++pattern; + break; + case '*': + if (wildCardMatch(str, pattern + 1)) + return true; + if (*str && wildCardMatch(str + 1, pattern)) + return true; + return false; + default: + if (*str++ != *pattern++) + return false; + break; + } + } + return !*str && !*pattern; +} + +std::string& Str::ltrim(std::string& str) { + str.erase(str.begin(), std::find_if(str.begin(), str.end(), [](char c) { + return !std::isspace(c); + } )); + return str; +} + +std::string& Str::rtrim(std::string& str) { + str.erase(std::find_if(str.rbegin(), str.rend(), [](char c) { + return !std::isspace(c); + }).base(), str.end()); + return str; +} + +std::string& Str::trim(std::string& str) { + return ltrim(rtrim(str)); +} + +bool Str::startsWith(const std::string& str, const std::string& start) { + return (str.length() >= start.length()) && (str.compare(0, start.length(), start) == 0); +} + +bool Str::endsWith(const std::string& str, const std::string& end) { + return (str.length() >= end.length()) && (str.compare(str.length() - end.length(), end.length(), end) == 0); +} + +std::string& Str::replaceAll(std::string& str, char replaceWhat, char replaceWith) { + std::replace(str.begin(), str.end(), replaceWhat, replaceWith); + return str; +} + +std::string& Str::replaceAll(std::string& str, const std::string& replaceWhat, + const std::string& replaceWith) { + if (replaceWhat == replaceWith) + return str; + std::size_t foundAt = std::string::npos; + while ((foundAt = str.find(replaceWhat, foundAt + 1)) != std::string::npos) { + str.replace(foundAt, replaceWhat.length(), replaceWith); + } + return str; +} + +void Str::replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, + const base::type::string_t& replaceWith) { + std::size_t foundAt = base::type::string_t::npos; + while ((foundAt = str.find(replaceWhat, foundAt + 1)) != base::type::string_t::npos) { + if (foundAt > 0 && str[foundAt - 1] == base::consts::kFormatSpecifierChar) { + str.erase(foundAt - 1, 1); + ++foundAt; + } else { + str.replace(foundAt, replaceWhat.length(), replaceWith); + return; + } + } +} +#if defined(ELPP_UNICODE) +void Str::replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, + const std::string& replaceWith) { + replaceFirstWithEscape(str, replaceWhat, base::type::string_t(replaceWith.begin(), replaceWith.end())); +} +#endif // defined(ELPP_UNICODE) + +std::string& Str::toUpper(std::string& str) { + std::transform(str.begin(), str.end(), str.begin(), + [](char c) { + return static_cast(::toupper(c)); + }); + return str; +} + +bool Str::cStringEq(const char* s1, const char* s2) { + if (s1 == nullptr && s2 == nullptr) return true; + if (s1 == nullptr || s2 == nullptr) return false; + return strcmp(s1, s2) == 0; +} + +bool Str::cStringCaseEq(const char* s1, const char* s2) { + if (s1 == nullptr && s2 == nullptr) return true; + if (s1 == nullptr || s2 == nullptr) return false; + + // With thanks to cygwin for this code + int d = 0; + + while (true) { + const int c1 = toupper(*s1++); + const int c2 = toupper(*s2++); + + if (((d = c1 - c2) != 0) || (c2 == '\0')) { + break; + } + } + + return d == 0; +} + +bool Str::contains(const char* str, char c) { + for (; *str; ++str) { + if (*str == c) + return true; + } + return false; +} + +char* Str::convertAndAddToBuff(std::size_t n, int len, char* buf, const char* bufLim, bool zeroPadded) { + char localBuff[10] = ""; + char* p = localBuff + sizeof(localBuff) - 2; + if (n > 0) { + for (; n > 0 && p > localBuff && len > 0; n /= 10, --len) + *--p = static_cast(n % 10 + '0'); + } else { + *--p = '0'; + --len; + } + if (zeroPadded) + while (p > localBuff && len-- > 0) *--p = static_cast('0'); + return addToBuff(p, buf, bufLim); +} + +char* Str::addToBuff(const char* str, char* buf, const char* bufLim) { + while ((buf < bufLim) && ((*buf = *str++) != '\0')) + ++buf; + return buf; +} + +char* Str::clearBuff(char buff[], std::size_t lim) { + STRCPY(buff, "", lim); + ELPP_UNUSED(lim); // For *nix we dont have anything using lim in above STRCPY macro + return buff; +} + +/// @brief Converts wchar* to char* +/// NOTE: Need to free return value after use! +char* Str::wcharPtrToCharPtr(const wchar_t* line) { + std::size_t len_ = wcslen(line) + 1; + char* buff_ = static_cast(malloc(len_ + 1)); +# if ELPP_OS_UNIX || (ELPP_OS_WINDOWS && !ELPP_CRT_DBG_WARNINGS) + std::wcstombs(buff_, line, len_); +# elif ELPP_OS_WINDOWS + std::size_t convCount_ = 0; + mbstate_t mbState_; + ::memset(static_cast(&mbState_), 0, sizeof(mbState_)); + wcsrtombs_s(&convCount_, buff_, len_, &line, len_, &mbState_); +# endif // ELPP_OS_UNIX || (ELPP_OS_WINDOWS && !ELPP_CRT_DBG_WARNINGS) + return buff_; +} + +// OS + +#if ELPP_OS_WINDOWS +/// @brief Gets environment variables for Windows based OS. +/// We are not using getenv(const char*) because of CRT deprecation +/// @param varname Variable name to get environment variable value for +/// @return If variable exist the value of it otherwise nullptr +const char* OS::getWindowsEnvironmentVariable(const char* varname) { + const DWORD bufferLen = 50; + static char buffer[bufferLen]; + if (GetEnvironmentVariableA(varname, buffer, bufferLen)) { + return buffer; + } + return nullptr; +} +#endif // ELPP_OS_WINDOWS +#if ELPP_OS_ANDROID +std::string OS::getProperty(const char* prop) { + char propVal[PROP_VALUE_MAX + 1]; + int ret = __system_property_get(prop, propVal); + return ret == 0 ? std::string() : std::string(propVal); +} + +std::string OS::getDeviceName(void) { + std::stringstream ss; + std::string manufacturer = getProperty("ro.product.manufacturer"); + std::string model = getProperty("ro.product.model"); + if (manufacturer.empty() || model.empty()) { + return std::string(); + } + ss << manufacturer << "-" << model; + return ss.str(); +} +#endif // ELPP_OS_ANDROID + +const std::string OS::getBashOutput(const char* command) { +#if (ELPP_OS_UNIX && !ELPP_OS_ANDROID && !ELPP_CYGWIN) + if (command == nullptr) { + return std::string(); + } + FILE* proc = nullptr; + if ((proc = popen(command, "r")) == nullptr) { + ELPP_INTERNAL_ERROR("\nUnable to run command [" << command << "]", true); + return std::string(); + } + char hBuff[4096]; + if (fgets(hBuff, sizeof(hBuff), proc) != nullptr) { + pclose(proc); + const std::size_t buffLen = strlen(hBuff); + if (buffLen > 0 && hBuff[buffLen - 1] == '\n') { + hBuff[buffLen - 1] = '\0'; + } + return std::string(hBuff); + } else { + pclose(proc); + } + return std::string(); +#else + ELPP_UNUSED(command); + return std::string(); +#endif // (ELPP_OS_UNIX && !ELPP_OS_ANDROID && !ELPP_CYGWIN) +} + +std::string OS::getEnvironmentVariable(const char* variableName, const char* defaultVal, + const char* alternativeBashCommand) { +#if ELPP_OS_UNIX + const char* val = getenv(variableName); +#elif ELPP_OS_WINDOWS + const char* val = getWindowsEnvironmentVariable(variableName); +#endif // ELPP_OS_UNIX + if ((val == nullptr) || ((strcmp(val, "") == 0))) { +#if ELPP_OS_UNIX && defined(ELPP_FORCE_ENV_VAR_FROM_BASH) + // Try harder on unix-based systems + std::string valBash = base::utils::OS::getBashOutput(alternativeBashCommand); + if (valBash.empty()) { + return std::string(defaultVal); + } else { + return valBash; + } +#elif ELPP_OS_WINDOWS || ELPP_OS_UNIX + ELPP_UNUSED(alternativeBashCommand); + return std::string(defaultVal); +#endif // ELPP_OS_UNIX && defined(ELPP_FORCE_ENV_VAR_FROM_BASH) + } + return std::string(val); +} + +std::string OS::currentUser(void) { +#if ELPP_OS_UNIX && !ELPP_OS_ANDROID + return getEnvironmentVariable("USER", base::consts::kUnknownUser, "whoami"); +#elif ELPP_OS_WINDOWS + return getEnvironmentVariable("USERNAME", base::consts::kUnknownUser); +#elif ELPP_OS_ANDROID + ELPP_UNUSED(base::consts::kUnknownUser); + return std::string("android"); +#else + return std::string(); +#endif // ELPP_OS_UNIX && !ELPP_OS_ANDROID +} + +std::string OS::currentHost(void) { +#if ELPP_OS_UNIX && !ELPP_OS_ANDROID + return getEnvironmentVariable("HOSTNAME", base::consts::kUnknownHost, "hostname"); +#elif ELPP_OS_WINDOWS + return getEnvironmentVariable("COMPUTERNAME", base::consts::kUnknownHost); +#elif ELPP_OS_ANDROID + ELPP_UNUSED(base::consts::kUnknownHost); + return getDeviceName(); +#else + return std::string(); +#endif // ELPP_OS_UNIX && !ELPP_OS_ANDROID +} + +bool OS::termSupportsColor(void) { + std::string term = getEnvironmentVariable("TERM", ""); + return term == "xterm" || term == "xterm-color" || term == "xterm-256color" + || term == "screen" || term == "linux" || term == "cygwin" + || term == "screen-256color"; +} + +// DateTime + +void DateTime::gettimeofday(struct timeval* tv) { +#if ELPP_OS_WINDOWS + if (tv != nullptr) { +# if ELPP_COMPILER_MSVC || defined(_MSC_EXTENSIONS) + const unsigned __int64 delta_ = 11644473600000000Ui64; +# else + const unsigned __int64 delta_ = 11644473600000000ULL; +# endif // ELPP_COMPILER_MSVC || defined(_MSC_EXTENSIONS) + const double secOffSet = 0.000001; + const unsigned long usecOffSet = 1000000; + FILETIME fileTime; + GetSystemTimeAsFileTime(&fileTime); + unsigned __int64 present = 0; + present |= fileTime.dwHighDateTime; + present = present << 32; + present |= fileTime.dwLowDateTime; + present /= 10; // mic-sec + // Subtract the difference + present -= delta_; + tv->tv_sec = static_cast(present * secOffSet); + tv->tv_usec = static_cast(present % usecOffSet); + } +#else + ::gettimeofday(tv, nullptr); +#endif // ELPP_OS_WINDOWS +} + +std::string DateTime::getDateTime(const char* format, const base::SubsecondPrecision* ssPrec) { + struct timeval currTime; + gettimeofday(&currTime); + return timevalToString(currTime, format, ssPrec); +} + +std::string DateTime::timevalToString(struct timeval tval, const char* format, + const el::base::SubsecondPrecision* ssPrec) { + struct ::tm timeInfo; + buildTimeInfo(&tval, &timeInfo); + const int kBuffSize = 30; + char buff_[kBuffSize] = ""; + parseFormat(buff_, kBuffSize, format, &timeInfo, static_cast(tval.tv_usec / ssPrec->m_offset), + ssPrec); + return std::string(buff_); +} + +base::type::string_t DateTime::formatTime(unsigned long long time, base::TimestampUnit timestampUnit) { + base::type::EnumType start = static_cast(timestampUnit); + const base::type::char_t* unit = base::consts::kTimeFormats[start].unit; + for (base::type::EnumType i = start; i < base::consts::kTimeFormatsCount - 1; ++i) { + if (time <= base::consts::kTimeFormats[i].value) { + break; + } + if (base::consts::kTimeFormats[i].value == 1000.0f && time / 1000.0f < 1.9f) { + break; + } + time /= static_cast(base::consts::kTimeFormats[i].value); + unit = base::consts::kTimeFormats[i + 1].unit; + } + base::type::stringstream_t ss; + ss << time << " " << unit; + return ss.str(); +} + +unsigned long long DateTime::getTimeDifference(const struct timeval& endTime, const struct timeval& startTime, + base::TimestampUnit timestampUnit) { + if (timestampUnit == base::TimestampUnit::Microsecond) { + return static_cast(static_cast(1000000 * endTime.tv_sec + endTime.tv_usec) - + static_cast(1000000 * startTime.tv_sec + startTime.tv_usec)); + } + // milliseconds + auto conv = [](const struct timeval& tim) { + return static_cast((tim.tv_sec * 1000) + (tim.tv_usec / 1000)); + }; + return static_cast(conv(endTime) - conv(startTime)); +} + +struct ::tm* DateTime::buildTimeInfo(struct timeval* currTime, struct ::tm* timeInfo) { +#if ELPP_OS_UNIX + time_t rawTime = currTime->tv_sec; + ::elpptime_r(&rawTime, timeInfo); + return timeInfo; +#else +# if ELPP_COMPILER_MSVC + ELPP_UNUSED(currTime); + time_t t; +# if defined(_USE_32BIT_TIME_T) + _time32(&t); +# else + _time64(&t); +# endif + elpptime_s(timeInfo, &t); + return timeInfo; +# else + // For any other compilers that don't have CRT warnings issue e.g, MinGW or TDM GCC- we use different method + time_t rawTime = currTime->tv_sec; + struct tm* tmInf = elpptime(&rawTime); + *timeInfo = *tmInf; + return timeInfo; +# endif // ELPP_COMPILER_MSVC +#endif // ELPP_OS_UNIX +} + +char* DateTime::parseFormat(char* buf, std::size_t bufSz, const char* format, const struct tm* tInfo, + std::size_t msec, const base::SubsecondPrecision* ssPrec) { + const char* bufLim = buf + bufSz; + for (; *format; ++format) { + if (*format == base::consts::kFormatSpecifierChar) { + switch (*++format) { + case base::consts::kFormatSpecifierChar: // Escape + break; + case '\0': // End + --format; + break; + case 'd': // Day + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_mday, 2, buf, bufLim); + continue; + case 'a': // Day of week (short) + buf = base::utils::Str::addToBuff(base::consts::kDaysAbbrev[tInfo->tm_wday], buf, bufLim); + continue; + case 'A': // Day of week (long) + buf = base::utils::Str::addToBuff(base::consts::kDays[tInfo->tm_wday], buf, bufLim); + continue; + case 'M': // month + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_mon + 1, 2, buf, bufLim); + continue; + case 'b': // month (short) + buf = base::utils::Str::addToBuff(base::consts::kMonthsAbbrev[tInfo->tm_mon], buf, bufLim); + continue; + case 'B': // month (long) + buf = base::utils::Str::addToBuff(base::consts::kMonths[tInfo->tm_mon], buf, bufLim); + continue; + case 'y': // year (two digits) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_year + base::consts::kYearBase, 2, buf, bufLim); + continue; + case 'Y': // year (four digits) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_year + base::consts::kYearBase, 4, buf, bufLim); + continue; + case 'h': // hour (12-hour) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_hour % 12, 2, buf, bufLim); + continue; + case 'H': // hour (24-hour) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_hour, 2, buf, bufLim); + continue; + case 'm': // minute + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_min, 2, buf, bufLim); + continue; + case 's': // second + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_sec, 2, buf, bufLim); + continue; + case 'z': // subsecond part + case 'g': + buf = base::utils::Str::convertAndAddToBuff(msec, ssPrec->m_width, buf, bufLim); + continue; + case 'F': // AM/PM + buf = base::utils::Str::addToBuff((tInfo->tm_hour >= 12) ? base::consts::kPm : base::consts::kAm, buf, bufLim); + continue; + default: + continue; + } + } + if (buf == bufLim) break; + *buf++ = *format; + } + return buf; +} + +// CommandLineArgs + +void CommandLineArgs::setArgs(int argc, char** argv) { + m_params.clear(); + m_paramsWithValue.clear(); + if (argc == 0 || argv == nullptr) { + return; + } + m_argc = argc; + m_argv = argv; + for (int i = 1; i < m_argc; ++i) { + const char* v = (strstr(m_argv[i], "=")); + if (v != nullptr && strlen(v) > 0) { + std::string key = std::string(m_argv[i]); + key = key.substr(0, key.find_first_of('=')); + if (hasParamWithValue(key.c_str())) { + ELPP_INTERNAL_INFO(1, "Skipping [" << key << "] arg since it already has value [" + << getParamValue(key.c_str()) << "]"); + } else { + m_paramsWithValue.insert(std::make_pair(key, std::string(v + 1))); + } + } + if (v == nullptr) { + if (hasParam(m_argv[i])) { + ELPP_INTERNAL_INFO(1, "Skipping [" << m_argv[i] << "] arg since it already exists"); + } else { + m_params.push_back(std::string(m_argv[i])); + } + } + } +} + +bool CommandLineArgs::hasParamWithValue(const char* paramKey) const { + return m_paramsWithValue.find(std::string(paramKey)) != m_paramsWithValue.end(); +} + +const char* CommandLineArgs::getParamValue(const char* paramKey) const { + std::unordered_map::const_iterator iter = m_paramsWithValue.find(std::string(paramKey)); + return iter != m_paramsWithValue.end() ? iter->second.c_str() : ""; +} + +bool CommandLineArgs::hasParam(const char* paramKey) const { + return std::find(m_params.begin(), m_params.end(), std::string(paramKey)) != m_params.end(); +} + +bool CommandLineArgs::empty(void) const { + return m_params.empty() && m_paramsWithValue.empty(); +} + +std::size_t CommandLineArgs::size(void) const { + return m_params.size() + m_paramsWithValue.size(); +} + +base::type::ostream_t& operator<<(base::type::ostream_t& os, const CommandLineArgs& c) { + for (int i = 1; i < c.m_argc; ++i) { + os << ELPP_LITERAL("[") << c.m_argv[i] << ELPP_LITERAL("]"); + if (i < c.m_argc - 1) { + os << ELPP_LITERAL(" "); + } + } + return os; +} + +} // namespace utils + +// el::base::threading +namespace threading { + +#if ELPP_THREADING_ENABLED +# if ELPP_USE_STD_THREADING +# if ELPP_ASYNC_LOGGING +static void msleep(int ms) { + // Only when async logging enabled - this is because async is strict on compiler +# if defined(ELPP_NO_SLEEP_FOR) + usleep(ms * 1000); +# else + std::this_thread::sleep_for(std::chrono::milliseconds(ms)); +# endif // defined(ELPP_NO_SLEEP_FOR) +} +# endif // ELPP_ASYNC_LOGGING +# endif // !ELPP_USE_STD_THREADING +#endif // ELPP_THREADING_ENABLED + +} // namespace threading + +// el::base + +// SubsecondPrecision + +void SubsecondPrecision::init(int width) { + if (width < 1 || width > 6) { + width = base::consts::kDefaultSubsecondPrecision; + } + m_width = width; + switch (m_width) { + case 3: + m_offset = 1000; + break; + case 4: + m_offset = 100; + break; + case 5: + m_offset = 10; + break; + case 6: + m_offset = 1; + break; + default: + m_offset = 1000; + break; + } +} + +// LogFormat + +LogFormat::LogFormat(void) : + m_level(Level::Unknown), + m_userFormat(base::type::string_t()), + m_format(base::type::string_t()), + m_dateTimeFormat(std::string()), + m_flags(0x0), + m_currentUser(base::utils::OS::currentUser()), + m_currentHost(base::utils::OS::currentHost()) { +} + +LogFormat::LogFormat(Level level, const base::type::string_t& format) + : m_level(level), m_userFormat(format), m_currentUser(base::utils::OS::currentUser()), + m_currentHost(base::utils::OS::currentHost()) { + parseFromFormat(m_userFormat); +} + +LogFormat::LogFormat(const LogFormat& logFormat): + m_level(logFormat.m_level), + m_userFormat(logFormat.m_userFormat), + m_format(logFormat.m_format), + m_dateTimeFormat(logFormat.m_dateTimeFormat), + m_flags(logFormat.m_flags), + m_currentUser(logFormat.m_currentUser), + m_currentHost(logFormat.m_currentHost) { +} + +LogFormat::LogFormat(LogFormat&& logFormat) { + m_level = std::move(logFormat.m_level); + m_userFormat = std::move(logFormat.m_userFormat); + m_format = std::move(logFormat.m_format); + m_dateTimeFormat = std::move(logFormat.m_dateTimeFormat); + m_flags = std::move(logFormat.m_flags); + m_currentUser = std::move(logFormat.m_currentUser); + m_currentHost = std::move(logFormat.m_currentHost); +} + +LogFormat& LogFormat::operator=(const LogFormat& logFormat) { + if (&logFormat != this) { + m_level = logFormat.m_level; + m_userFormat = logFormat.m_userFormat; + m_dateTimeFormat = logFormat.m_dateTimeFormat; + m_flags = logFormat.m_flags; + m_currentUser = logFormat.m_currentUser; + m_currentHost = logFormat.m_currentHost; + } + return *this; +} + +bool LogFormat::operator==(const LogFormat& other) { + return m_level == other.m_level && m_userFormat == other.m_userFormat && m_format == other.m_format && + m_dateTimeFormat == other.m_dateTimeFormat && m_flags == other.m_flags; +} + +/// @brief Updates format to be used while logging. +/// @param userFormat User provided format +void LogFormat::parseFromFormat(const base::type::string_t& userFormat) { + // We make copy because we will be changing the format + // i.e, removing user provided date format from original format + // and then storing it. + base::type::string_t formatCopy = userFormat; + m_flags = 0x0; + auto conditionalAddFlag = [&](const base::type::char_t* specifier, base::FormatFlags flag) { + std::size_t foundAt = base::type::string_t::npos; + while ((foundAt = formatCopy.find(specifier, foundAt + 1)) != base::type::string_t::npos) { + if (foundAt > 0 && formatCopy[foundAt - 1] == base::consts::kFormatSpecifierChar) { + if (hasFlag(flag)) { + // If we already have flag we remove the escape chars so that '%%' is turned to '%' + // even after specifier resolution - this is because we only replaceFirst specifier + formatCopy.erase(foundAt - 1, 1); + ++foundAt; + } + } else { + if (!hasFlag(flag)) addFlag(flag); + } + } + }; + conditionalAddFlag(base::consts::kAppNameFormatSpecifier, base::FormatFlags::AppName); + conditionalAddFlag(base::consts::kSeverityLevelFormatSpecifier, base::FormatFlags::Level); + conditionalAddFlag(base::consts::kSeverityLevelShortFormatSpecifier, base::FormatFlags::LevelShort); + conditionalAddFlag(base::consts::kLoggerIdFormatSpecifier, base::FormatFlags::LoggerId); + conditionalAddFlag(base::consts::kThreadIdFormatSpecifier, base::FormatFlags::ThreadId); + conditionalAddFlag(base::consts::kLogFileFormatSpecifier, base::FormatFlags::File); + conditionalAddFlag(base::consts::kLogFileBaseFormatSpecifier, base::FormatFlags::FileBase); + conditionalAddFlag(base::consts::kLogLineFormatSpecifier, base::FormatFlags::Line); + conditionalAddFlag(base::consts::kLogLocationFormatSpecifier, base::FormatFlags::Location); + conditionalAddFlag(base::consts::kLogFunctionFormatSpecifier, base::FormatFlags::Function); + conditionalAddFlag(base::consts::kCurrentUserFormatSpecifier, base::FormatFlags::User); + conditionalAddFlag(base::consts::kCurrentHostFormatSpecifier, base::FormatFlags::Host); + conditionalAddFlag(base::consts::kMessageFormatSpecifier, base::FormatFlags::LogMessage); + conditionalAddFlag(base::consts::kVerboseLevelFormatSpecifier, base::FormatFlags::VerboseLevel); + // For date/time we need to extract user's date format first + std::size_t dateIndex = std::string::npos; + if ((dateIndex = formatCopy.find(base::consts::kDateTimeFormatSpecifier)) != std::string::npos) { + while (dateIndex != std::string::npos && dateIndex > 0 && formatCopy[dateIndex - 1] == base::consts::kFormatSpecifierChar) { + dateIndex = formatCopy.find(base::consts::kDateTimeFormatSpecifier, dateIndex + 1); + } + if (dateIndex != std::string::npos) { + addFlag(base::FormatFlags::DateTime); + updateDateFormat(dateIndex, formatCopy); + } + } + m_format = formatCopy; + updateFormatSpec(); +} + +void LogFormat::updateDateFormat(std::size_t index, base::type::string_t& currFormat) { + if (hasFlag(base::FormatFlags::DateTime)) { + index += ELPP_STRLEN(base::consts::kDateTimeFormatSpecifier); + } + const base::type::char_t* ptr = currFormat.c_str() + index; + if ((currFormat.size() > index) && (ptr[0] == '{')) { + // User has provided format for date/time + ++ptr; + int count = 1; // Start by 1 in order to remove starting brace + std::stringstream ss; + for (; *ptr; ++ptr, ++count) { + if (*ptr == '}') { + ++count; // In order to remove ending brace + break; + } + ss << static_cast(*ptr); + } + currFormat.erase(index, count); + m_dateTimeFormat = ss.str(); + } else { + // No format provided, use default + if (hasFlag(base::FormatFlags::DateTime)) { + m_dateTimeFormat = std::string(base::consts::kDefaultDateTimeFormat); + } + } +} + +void LogFormat::updateFormatSpec(void) { + // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. + if (m_level == Level::Debug) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kDebugLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kDebugLevelShortLogValue); + } else if (m_level == Level::Info) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kInfoLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kInfoLevelShortLogValue); + } else if (m_level == Level::Warning) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kWarningLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kWarningLevelShortLogValue); + } else if (m_level == Level::Error) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kErrorLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kErrorLevelShortLogValue); + } else if (m_level == Level::Fatal) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kFatalLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kFatalLevelShortLogValue); + } else if (m_level == Level::Verbose) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kVerboseLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kVerboseLevelShortLogValue); + } else if (m_level == Level::Trace) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kTraceLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kTraceLevelShortLogValue); + } + if (hasFlag(base::FormatFlags::User)) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kCurrentUserFormatSpecifier, + m_currentUser); + } + if (hasFlag(base::FormatFlags::Host)) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kCurrentHostFormatSpecifier, + m_currentHost); + } + // Ignore Level::Global and Level::Unknown +} + +// TypedConfigurations + +TypedConfigurations::TypedConfigurations(Configurations* configurations, + LogStreamsReferenceMapPtr logStreamsReference) { + m_configurations = configurations; + m_logStreamsReference = logStreamsReference; + build(m_configurations); +} + +TypedConfigurations::TypedConfigurations(const TypedConfigurations& other) { + this->m_configurations = other.m_configurations; + this->m_logStreamsReference = other.m_logStreamsReference; + build(m_configurations); +} + +bool TypedConfigurations::enabled(Level level) { + return getConfigByVal(level, &m_enabledMap, "enabled"); +} + +bool TypedConfigurations::toFile(Level level) { + return getConfigByVal(level, &m_toFileMap, "toFile"); +} + +const std::string& TypedConfigurations::filename(Level level) { + return getConfigByRef(level, &m_filenameMap, "filename"); +} + +bool TypedConfigurations::toStandardOutput(Level level) { + return getConfigByVal(level, &m_toStandardOutputMap, "toStandardOutput"); +} + +const base::LogFormat& TypedConfigurations::logFormat(Level level) { + return getConfigByRef(level, &m_logFormatMap, "logFormat"); +} + +const base::SubsecondPrecision& TypedConfigurations::subsecondPrecision(Level level) { + return getConfigByRef(level, &m_subsecondPrecisionMap, "subsecondPrecision"); +} + +const base::MillisecondsWidth& TypedConfigurations::millisecondsWidth(Level level) { + return getConfigByRef(level, &m_subsecondPrecisionMap, "millisecondsWidth"); +} + +bool TypedConfigurations::performanceTracking(Level level) { + return getConfigByVal(level, &m_performanceTrackingMap, "performanceTracking"); +} + +base::type::fstream_t* TypedConfigurations::fileStream(Level level) { + return getConfigByRef(level, &m_fileStreamMap, "fileStream").get(); +} + +std::size_t TypedConfigurations::maxLogFileSize(Level level) { + return getConfigByVal(level, &m_maxLogFileSizeMap, "maxLogFileSize"); +} + +std::size_t TypedConfigurations::logFlushThreshold(Level level) { + return getConfigByVal(level, &m_logFlushThresholdMap, "logFlushThreshold"); +} + +void TypedConfigurations::build(Configurations* configurations) { + base::threading::ScopedLock scopedLock(lock()); + auto getBool = [] (std::string boolStr) -> bool { // Pass by value for trimming + base::utils::Str::trim(boolStr); + return (boolStr == "TRUE" || boolStr == "true" || boolStr == "1"); + }; + std::vector withFileSizeLimit; + for (Configurations::const_iterator it = configurations->begin(); it != configurations->end(); ++it) { + Configuration* conf = *it; + // We cannot use switch on strong enums because Intel C++ dont support them yet + if (conf->configurationType() == ConfigurationType::Enabled) { + setValue(conf->level(), getBool(conf->value()), &m_enabledMap); + } else if (conf->configurationType() == ConfigurationType::ToFile) { + setValue(conf->level(), getBool(conf->value()), &m_toFileMap); + } else if (conf->configurationType() == ConfigurationType::ToStandardOutput) { + setValue(conf->level(), getBool(conf->value()), &m_toStandardOutputMap); + } else if (conf->configurationType() == ConfigurationType::Filename) { + // We do not yet configure filename but we will configure in another + // loop. This is because if file cannot be created, we will force ToFile + // to be false. Because configuring logger is not necessarily performance + // sensitive operation, we can live with another loop; (by the way this loop + // is not very heavy either) + } else if (conf->configurationType() == ConfigurationType::Format) { + setValue(conf->level(), base::LogFormat(conf->level(), + base::type::string_t(conf->value().begin(), conf->value().end())), &m_logFormatMap); + } else if (conf->configurationType() == ConfigurationType::SubsecondPrecision) { + setValue(Level::Global, + base::SubsecondPrecision(static_cast(getULong(conf->value()))), &m_subsecondPrecisionMap); + } else if (conf->configurationType() == ConfigurationType::PerformanceTracking) { + setValue(Level::Global, getBool(conf->value()), &m_performanceTrackingMap); + } else if (conf->configurationType() == ConfigurationType::MaxLogFileSize) { + auto v = getULong(conf->value()); + setValue(conf->level(), static_cast(v), &m_maxLogFileSizeMap); + if (v != 0) { + withFileSizeLimit.push_back(conf); + } + } else if (conf->configurationType() == ConfigurationType::LogFlushThreshold) { + setValue(conf->level(), static_cast(getULong(conf->value())), &m_logFlushThresholdMap); + } + } + // As mentioned earlier, we will now set filename configuration in separate loop to deal with non-existent files + for (Configurations::const_iterator it = configurations->begin(); it != configurations->end(); ++it) { + Configuration* conf = *it; + if (conf->configurationType() == ConfigurationType::Filename) { + insertFile(conf->level(), conf->value()); + } + } + for (std::vector::iterator conf = withFileSizeLimit.begin(); + conf != withFileSizeLimit.end(); ++conf) { + // This is not unsafe as mutex is locked in currect scope + unsafeValidateFileRolling((*conf)->level(), base::defaultPreRollOutCallback); + } +} + +unsigned long TypedConfigurations::getULong(std::string confVal) { + bool valid = true; + base::utils::Str::trim(confVal); + valid = !confVal.empty() && std::find_if(confVal.begin(), confVal.end(), + [](char c) { + return !base::utils::Str::isDigit(c); + }) == confVal.end(); + if (!valid) { + valid = false; + ELPP_ASSERT(valid, "Configuration value not a valid integer [" << confVal << "]"); + return 0; + } + return atol(confVal.c_str()); +} + +std::string TypedConfigurations::resolveFilename(const std::string& filename) { + std::string resultingFilename = filename; + std::size_t dateIndex = std::string::npos; + std::string dateTimeFormatSpecifierStr = std::string(base::consts::kDateTimeFormatSpecifierForFilename); + if ((dateIndex = resultingFilename.find(dateTimeFormatSpecifierStr.c_str())) != std::string::npos) { + while (dateIndex > 0 && resultingFilename[dateIndex - 1] == base::consts::kFormatSpecifierChar) { + dateIndex = resultingFilename.find(dateTimeFormatSpecifierStr.c_str(), dateIndex + 1); + } + if (dateIndex != std::string::npos) { + const char* ptr = resultingFilename.c_str() + dateIndex; + // Goto end of specifier + ptr += dateTimeFormatSpecifierStr.size(); + std::string fmt; + if ((resultingFilename.size() > dateIndex) && (ptr[0] == '{')) { + // User has provided format for date/time + ++ptr; + int count = 1; // Start by 1 in order to remove starting brace + std::stringstream ss; + for (; *ptr; ++ptr, ++count) { + if (*ptr == '}') { + ++count; // In order to remove ending brace + break; + } + ss << *ptr; + } + resultingFilename.erase(dateIndex + dateTimeFormatSpecifierStr.size(), count); + fmt = ss.str(); + } else { + fmt = std::string(base::consts::kDefaultDateTimeFormatInFilename); + } + base::SubsecondPrecision ssPrec(3); + std::string now = base::utils::DateTime::getDateTime(fmt.c_str(), &ssPrec); + base::utils::Str::replaceAll(now, '/', '-'); // Replace path element since we are dealing with filename + base::utils::Str::replaceAll(resultingFilename, dateTimeFormatSpecifierStr, now); + } + } + return resultingFilename; +} + +void TypedConfigurations::insertFile(Level level, const std::string& fullFilename) { + std::string resolvedFilename = resolveFilename(fullFilename); + if (resolvedFilename.empty()) { + std::cerr << "Could not load empty file for logging, please re-check your configurations for level [" + << LevelHelper::convertToString(level) << "]"; + } + std::string filePath = base::utils::File::extractPathFromFilename(resolvedFilename, base::consts::kFilePathSeparator); + if (filePath.size() < resolvedFilename.size()) { + base::utils::File::createPath(filePath); + } + auto create = [&](Level level) { + base::LogStreamsReferenceMap::iterator filestreamIter = m_logStreamsReference->find(resolvedFilename); + base::type::fstream_t* fs = nullptr; + if (filestreamIter == m_logStreamsReference->end()) { + // We need a completely new stream, nothing to share with + fs = base::utils::File::newFileStream(resolvedFilename); + m_filenameMap.insert(std::make_pair(level, resolvedFilename)); + m_fileStreamMap.insert(std::make_pair(level, base::FileStreamPtr(fs))); + m_logStreamsReference->insert(std::make_pair(resolvedFilename, base::FileStreamPtr(m_fileStreamMap.at(level)))); + } else { + // Woops! we have an existing one, share it! + m_filenameMap.insert(std::make_pair(level, filestreamIter->first)); + m_fileStreamMap.insert(std::make_pair(level, base::FileStreamPtr(filestreamIter->second))); + fs = filestreamIter->second.get(); + } + if (fs == nullptr) { + // We display bad file error from newFileStream() + ELPP_INTERNAL_ERROR("Setting [TO_FILE] of [" + << LevelHelper::convertToString(level) << "] to FALSE", false); + setValue(level, false, &m_toFileMap); + } + }; + // If we dont have file conf for any level, create it for Level::Global first + // otherwise create for specified level + create(m_filenameMap.empty() && m_fileStreamMap.empty() ? Level::Global : level); +} + +bool TypedConfigurations::unsafeValidateFileRolling(Level level, const PreRollOutCallback& preRollOutCallback) { + base::type::fstream_t* fs = unsafeGetConfigByRef(level, &m_fileStreamMap, "fileStream").get(); + if (fs == nullptr) { + return true; + } + std::size_t maxLogFileSize = unsafeGetConfigByVal(level, &m_maxLogFileSizeMap, "maxLogFileSize"); + std::size_t currFileSize = base::utils::File::getSizeOfFile(fs); + if (maxLogFileSize != 0 && currFileSize >= maxLogFileSize) { + std::string fname = unsafeGetConfigByRef(level, &m_filenameMap, "filename"); + ELPP_INTERNAL_INFO(1, "Truncating log file [" << fname << "] as a result of configurations for level [" + << LevelHelper::convertToString(level) << "]"); + fs->close(); + preRollOutCallback(fname.c_str(), currFileSize); + fs->open(fname, std::fstream::out | std::fstream::trunc); + return true; + } + return false; +} + +// RegisteredHitCounters + +bool RegisteredHitCounters::validateEveryN(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { + base::threading::ScopedLock scopedLock(lock()); + base::HitCounter* counter = get(filename, lineNumber); + if (counter == nullptr) { + registerNew(counter = new base::HitCounter(filename, lineNumber)); + } + counter->validateHitCounts(n); + bool result = (n >= 1 && counter->hitCounts() != 0 && counter->hitCounts() % n == 0); + return result; +} + +/// @brief Validates counter for hits >= N, i.e, registers new if does not exist otherwise updates original one +/// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned +bool RegisteredHitCounters::validateAfterN(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { + base::threading::ScopedLock scopedLock(lock()); + base::HitCounter* counter = get(filename, lineNumber); + if (counter == nullptr) { + registerNew(counter = new base::HitCounter(filename, lineNumber)); + } + // Do not use validateHitCounts here since we do not want to reset counter here + // Note the >= instead of > because we are incrementing + // after this check + if (counter->hitCounts() >= n) + return true; + counter->increment(); + return false; +} + +/// @brief Validates counter for hits are <= n, i.e, registers new if does not exist otherwise updates original one +/// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned +bool RegisteredHitCounters::validateNTimes(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { + base::threading::ScopedLock scopedLock(lock()); + base::HitCounter* counter = get(filename, lineNumber); + if (counter == nullptr) { + registerNew(counter = new base::HitCounter(filename, lineNumber)); + } + counter->increment(); + // Do not use validateHitCounts here since we do not want to reset counter here + if (counter->hitCounts() <= n) + return true; + return false; +} + +// RegisteredLoggers + +RegisteredLoggers::RegisteredLoggers(const LogBuilderPtr& defaultLogBuilder) : + m_defaultLogBuilder(defaultLogBuilder) { + m_defaultConfigurations.setToDefault(); + m_logStreamsReference = std::make_shared(); +} + +Logger* RegisteredLoggers::get(const std::string& id, bool forceCreation) { + base::threading::ScopedLock scopedLock(lock()); + Logger* logger_ = base::utils::Registry::get(id); + if (logger_ == nullptr && forceCreation) { + bool validId = Logger::isValidId(id); + if (!validId) { + ELPP_ASSERT(validId, "Invalid logger ID [" << id << "]. Not registering this logger."); + return nullptr; + } + logger_ = new Logger(id, m_defaultConfigurations, m_logStreamsReference); + logger_->m_logBuilder = m_defaultLogBuilder; + registerNew(id, logger_); + LoggerRegistrationCallback* callback = nullptr; + for (const std::pair& h + : m_loggerRegistrationCallbacks) { + callback = h.second.get(); + if (callback != nullptr && callback->enabled()) { + callback->handle(logger_); + } + } + } + return logger_; +} + +bool RegisteredLoggers::remove(const std::string& id) { + if (id == base::consts::kDefaultLoggerId) { + return false; + } + // get has internal lock + Logger* logger = base::utils::Registry::get(id); + if (logger != nullptr) { + // unregister has internal lock + unregister(logger); + } + return true; +} + +void RegisteredLoggers::unsafeFlushAll(void) { + ELPP_INTERNAL_INFO(1, "Flushing all log files"); + for (base::LogStreamsReferenceMap::iterator it = m_logStreamsReference->begin(); + it != m_logStreamsReference->end(); ++it) { + if (it->second.get() == nullptr) continue; + it->second->flush(); + } +} + +// VRegistry + +VRegistry::VRegistry(base::type::VerboseLevel level, base::type::EnumType* pFlags) : m_level(level), m_pFlags(pFlags) { +} + +/// @brief Sets verbose level. Accepted range is 0-9 +void VRegistry::setLevel(base::type::VerboseLevel level) { + base::threading::ScopedLock scopedLock(lock()); + if (level > 9) + m_level = base::consts::kMaxVerboseLevel; + else + m_level = level; +} + +void VRegistry::setModules(const char* modules) { + base::threading::ScopedLock scopedLock(lock()); + auto addSuffix = [](std::stringstream& ss, const char* sfx, const char* prev) { + if (prev != nullptr && base::utils::Str::endsWith(ss.str(), std::string(prev))) { + std::string chr(ss.str().substr(0, ss.str().size() - strlen(prev))); + ss.str(std::string("")); + ss << chr; + } + if (base::utils::Str::endsWith(ss.str(), std::string(sfx))) { + std::string chr(ss.str().substr(0, ss.str().size() - strlen(sfx))); + ss.str(std::string("")); + ss << chr; + } + ss << sfx; + }; + auto insert = [&](std::stringstream& ss, base::type::VerboseLevel level) { + if (!base::utils::hasFlag(LoggingFlag::DisableVModulesExtensions, *m_pFlags)) { + addSuffix(ss, ".h", nullptr); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".c", ".h"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".cpp", ".c"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".cc", ".cpp"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".cxx", ".cc"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".-inl.h", ".cxx"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".hxx", ".-inl.h"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".hpp", ".hxx"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".hh", ".hpp"); + } + m_modules.insert(std::make_pair(ss.str(), level)); + }; + bool isMod = true; + bool isLevel = false; + std::stringstream ss; + int level = -1; + for (; *modules; ++modules) { + switch (*modules) { + case '=': + isLevel = true; + isMod = false; + break; + case ',': + isLevel = false; + isMod = true; + if (!ss.str().empty() && level != -1) { + insert(ss, static_cast(level)); + ss.str(std::string("")); + level = -1; + } + break; + default: + if (isMod) { + ss << *modules; + } else if (isLevel) { + if (isdigit(*modules)) { + level = static_cast(*modules) - 48; + } + } + break; + } + } + if (!ss.str().empty() && level != -1) { + insert(ss, static_cast(level)); + } +} + +bool VRegistry::allowed(base::type::VerboseLevel vlevel, const char* file) { + base::threading::ScopedLock scopedLock(lock()); + if (m_modules.empty() || file == nullptr) { + return vlevel <= m_level; + } else { + char baseFilename[base::consts::kSourceFilenameMaxLength] = ""; + base::utils::File::buildBaseFilename(file, baseFilename); + std::unordered_map::iterator it = m_modules.begin(); + for (; it != m_modules.end(); ++it) { + if (base::utils::Str::wildCardMatch(baseFilename, it->first.c_str())) { + return vlevel <= it->second; + } + } + if (base::utils::hasFlag(LoggingFlag::AllowVerboseIfModuleNotSpecified, *m_pFlags)) { + return true; + } + return false; + } +} + +void VRegistry::setFromArgs(const base::utils::CommandLineArgs* commandLineArgs) { + if (commandLineArgs->hasParam("-v") || commandLineArgs->hasParam("--verbose") || + commandLineArgs->hasParam("-V") || commandLineArgs->hasParam("--VERBOSE")) { + setLevel(base::consts::kMaxVerboseLevel); + } else if (commandLineArgs->hasParamWithValue("--v")) { + setLevel(static_cast(atoi(commandLineArgs->getParamValue("--v")))); + } else if (commandLineArgs->hasParamWithValue("--V")) { + setLevel(static_cast(atoi(commandLineArgs->getParamValue("--V")))); + } else if ((commandLineArgs->hasParamWithValue("-vmodule")) && vModulesEnabled()) { + setModules(commandLineArgs->getParamValue("-vmodule")); + } else if (commandLineArgs->hasParamWithValue("-VMODULE") && vModulesEnabled()) { + setModules(commandLineArgs->getParamValue("-VMODULE")); + } +} + +#if !defined(ELPP_DEFAULT_LOGGING_FLAGS) +# define ELPP_DEFAULT_LOGGING_FLAGS 0x0 +#endif // !defined(ELPP_DEFAULT_LOGGING_FLAGS) +// Storage +#if ELPP_ASYNC_LOGGING +Storage::Storage(const LogBuilderPtr& defaultLogBuilder, base::IWorker* asyncDispatchWorker) : +#else +Storage::Storage(const LogBuilderPtr& defaultLogBuilder) : +#endif // ELPP_ASYNC_LOGGING + m_registeredHitCounters(new base::RegisteredHitCounters()), + m_registeredLoggers(new base::RegisteredLoggers(defaultLogBuilder)), + m_flags(ELPP_DEFAULT_LOGGING_FLAGS), + m_vRegistry(new base::VRegistry(0, &m_flags)), + +#if ELPP_ASYNC_LOGGING + m_asyncLogQueue(new base::AsyncLogQueue()), + m_asyncDispatchWorker(asyncDispatchWorker), +#endif // ELPP_ASYNC_LOGGING + + m_preRollOutCallback(base::defaultPreRollOutCallback) { + // Register default logger + m_registeredLoggers->get(std::string(base::consts::kDefaultLoggerId)); + // We register default logger anyway (worse case it's not going to register) just in case + m_registeredLoggers->get("default"); + +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + // Register performance logger and reconfigure format + Logger* performanceLogger = m_registeredLoggers->get(std::string(base::consts::kPerformanceLoggerId)); + m_registeredLoggers->get("performance"); + performanceLogger->configurations()->setGlobally(ConfigurationType::Format, std::string("%datetime %level %msg")); + performanceLogger->reconfigure(); +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + +#if defined(ELPP_SYSLOG) + // Register syslog logger and reconfigure format + Logger* sysLogLogger = m_registeredLoggers->get(std::string(base::consts::kSysLogLoggerId)); + sysLogLogger->configurations()->setGlobally(ConfigurationType::Format, std::string("%level: %msg")); + sysLogLogger->reconfigure(); +#endif // defined(ELPP_SYSLOG) + addFlag(LoggingFlag::AllowVerboseIfModuleNotSpecified); +#if ELPP_ASYNC_LOGGING + installLogDispatchCallback(std::string("AsyncLogDispatchCallback")); +#else + installLogDispatchCallback(std::string("DefaultLogDispatchCallback")); +#endif // ELPP_ASYNC_LOGGING +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + installPerformanceTrackingCallback + (std::string("DefaultPerformanceTrackingCallback")); +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + ELPP_INTERNAL_INFO(1, "Easylogging++ has been initialized"); +#if ELPP_ASYNC_LOGGING + m_asyncDispatchWorker->start(); +#endif // ELPP_ASYNC_LOGGING +} + +Storage::~Storage(void) { + ELPP_INTERNAL_INFO(4, "Destroying storage"); +#if ELPP_ASYNC_LOGGING + ELPP_INTERNAL_INFO(5, "Replacing log dispatch callback to synchronous"); + uninstallLogDispatchCallback(std::string("AsyncLogDispatchCallback")); + installLogDispatchCallback(std::string("DefaultLogDispatchCallback")); + ELPP_INTERNAL_INFO(5, "Destroying asyncDispatchWorker"); + base::utils::safeDelete(m_asyncDispatchWorker); + ELPP_INTERNAL_INFO(5, "Destroying asyncLogQueue"); + base::utils::safeDelete(m_asyncLogQueue); +#endif // ELPP_ASYNC_LOGGING + ELPP_INTERNAL_INFO(5, "Destroying registeredHitCounters"); + base::utils::safeDelete(m_registeredHitCounters); + ELPP_INTERNAL_INFO(5, "Destroying registeredLoggers"); + base::utils::safeDelete(m_registeredLoggers); + ELPP_INTERNAL_INFO(5, "Destroying vRegistry"); + base::utils::safeDelete(m_vRegistry); +} + +bool Storage::hasCustomFormatSpecifier(const char* formatSpecifier) { + base::threading::ScopedLock scopedLock(customFormatSpecifiersLock()); + return std::find(m_customFormatSpecifiers.begin(), m_customFormatSpecifiers.end(), + formatSpecifier) != m_customFormatSpecifiers.end(); +} + +void Storage::installCustomFormatSpecifier(const CustomFormatSpecifier& customFormatSpecifier) { + if (hasCustomFormatSpecifier(customFormatSpecifier.formatSpecifier())) { + return; + } + base::threading::ScopedLock scopedLock(customFormatSpecifiersLock()); + m_customFormatSpecifiers.push_back(customFormatSpecifier); +} + +bool Storage::uninstallCustomFormatSpecifier(const char* formatSpecifier) { + base::threading::ScopedLock scopedLock(customFormatSpecifiersLock()); + std::vector::iterator it = std::find(m_customFormatSpecifiers.begin(), + m_customFormatSpecifiers.end(), formatSpecifier); + if (it != m_customFormatSpecifiers.end() && strcmp(formatSpecifier, it->formatSpecifier()) == 0) { + m_customFormatSpecifiers.erase(it); + return true; + } + return false; +} + +void Storage::setApplicationArguments(int argc, char** argv) { + m_commandLineArgs.setArgs(argc, argv); + m_vRegistry->setFromArgs(commandLineArgs()); + // default log file +#if !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) + if (m_commandLineArgs.hasParamWithValue(base::consts::kDefaultLogFileParam)) { + Configurations c; + c.setGlobally(ConfigurationType::Filename, + std::string(m_commandLineArgs.getParamValue(base::consts::kDefaultLogFileParam))); + registeredLoggers()->setDefaultConfigurations(c); + for (base::RegisteredLoggers::iterator it = registeredLoggers()->begin(); + it != registeredLoggers()->end(); ++it) { + it->second->configure(c); + } + } +#endif // !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) +#if defined(ELPP_LOGGING_FLAGS_FROM_ARG) + if (m_commandLineArgs.hasParamWithValue(base::consts::kLoggingFlagsParam)) { + int userInput = atoi(m_commandLineArgs.getParamValue(base::consts::kLoggingFlagsParam)); + if (ELPP_DEFAULT_LOGGING_FLAGS == 0x0) { + m_flags = userInput; + } else { + base::utils::addFlag(userInput, &m_flags); + } + } +#endif // defined(ELPP_LOGGING_FLAGS_FROM_ARG) +} + +} // namespace base + +// LogDispatchCallback +#if defined(ELPP_THREAD_SAFE) +void LogDispatchCallback::handle(const LogDispatchData* data) { + base::threading::ScopedLock scopedLock(m_fileLocksMapLock); + std::string filename = data->logMessage()->logger()->typedConfigurations()->filename(data->logMessage()->level()); + auto lock = m_fileLocks.find(filename); + if (lock == m_fileLocks.end()) { + m_fileLocks.emplace(std::make_pair(filename, std::unique_ptr(new base::threading::Mutex))); + } +} +#else +void LogDispatchCallback::handle(const LogDispatchData* /*data*/) {} +#endif + +base::threading::Mutex& LogDispatchCallback::fileHandle(const LogDispatchData* data) { + auto it = m_fileLocks.find(data->logMessage()->logger()->typedConfigurations()->filename(data->logMessage()->level())); + return *(it->second.get()); +} + +namespace base { +// DefaultLogDispatchCallback + +void DefaultLogDispatchCallback::handle(const LogDispatchData* data) { +#if defined(ELPP_THREAD_SAFE) + LogDispatchCallback::handle(data); + base::threading::ScopedLock scopedLock(fileHandle(data)); +#endif + m_data = data; + dispatch(m_data->logMessage()->logger()->logBuilder()->build(m_data->logMessage(), + m_data->dispatchAction() == base::DispatchAction::NormalLog)); +} + +void DefaultLogDispatchCallback::dispatch(base::type::string_t&& logLine) { + if (m_data->dispatchAction() == base::DispatchAction::NormalLog) { + if (m_data->logMessage()->logger()->m_typedConfigurations->toFile(m_data->logMessage()->level())) { + base::type::fstream_t* fs = m_data->logMessage()->logger()->m_typedConfigurations->fileStream( + m_data->logMessage()->level()); + if (fs != nullptr) { + fs->write(logLine.c_str(), logLine.size()); + if (fs->fail()) { + ELPP_INTERNAL_ERROR("Unable to write log to file [" + << m_data->logMessage()->logger()->m_typedConfigurations->filename(m_data->logMessage()->level()) << "].\n" + << "Few possible reasons (could be something else):\n" << " * Permission denied\n" + << " * Disk full\n" << " * Disk is not writable", true); + } else { + if (ELPP->hasFlag(LoggingFlag::ImmediateFlush) + || (m_data->logMessage()->logger()->isFlushNeeded(m_data->logMessage()->level()))) { + m_data->logMessage()->logger()->flush(m_data->logMessage()->level(), fs); + } + } + } else { + ELPP_INTERNAL_ERROR("Log file for [" << LevelHelper::convertToString(m_data->logMessage()->level()) << "] " + << "has not been configured but [TO_FILE] is configured to TRUE. [Logger ID: " + << m_data->logMessage()->logger()->id() << "]", false); + } + } + if (m_data->logMessage()->logger()->m_typedConfigurations->toStandardOutput(m_data->logMessage()->level())) { + if (ELPP->hasFlag(LoggingFlag::ColoredTerminalOutput)) + m_data->logMessage()->logger()->logBuilder()->convertToColoredOutput(&logLine, m_data->logMessage()->level()); + ELPP_COUT << ELPP_COUT_LINE(logLine); + } + } +#if defined(ELPP_SYSLOG) + else if (m_data->dispatchAction() == base::DispatchAction::SysLog) { + // Determine syslog priority + int sysLogPriority = 0; + if (m_data->logMessage()->level() == Level::Fatal) + sysLogPriority = LOG_EMERG; + else if (m_data->logMessage()->level() == Level::Error) + sysLogPriority = LOG_ERR; + else if (m_data->logMessage()->level() == Level::Warning) + sysLogPriority = LOG_WARNING; + else if (m_data->logMessage()->level() == Level::Info) + sysLogPriority = LOG_INFO; + else if (m_data->logMessage()->level() == Level::Debug) + sysLogPriority = LOG_DEBUG; + else + sysLogPriority = LOG_NOTICE; +# if defined(ELPP_UNICODE) + char* line = base::utils::Str::wcharPtrToCharPtr(logLine.c_str()); + syslog(sysLogPriority, "%s", line); + free(line); +# else + syslog(sysLogPriority, "%s", logLine.c_str()); +# endif + } +#endif // defined(ELPP_SYSLOG) +} + +#if ELPP_ASYNC_LOGGING + +// AsyncLogDispatchCallback + +void AsyncLogDispatchCallback::handle(const LogDispatchData* data) { + base::type::string_t logLine = data->logMessage()->logger()->logBuilder()->build(data->logMessage(), + data->dispatchAction() == base::DispatchAction::NormalLog); + if (data->dispatchAction() == base::DispatchAction::NormalLog + && data->logMessage()->logger()->typedConfigurations()->toStandardOutput(data->logMessage()->level())) { + if (ELPP->hasFlag(LoggingFlag::ColoredTerminalOutput)) + data->logMessage()->logger()->logBuilder()->convertToColoredOutput(&logLine, data->logMessage()->level()); + ELPP_COUT << ELPP_COUT_LINE(logLine); + } + // Save resources and only queue if we want to write to file otherwise just ignore handler + if (data->logMessage()->logger()->typedConfigurations()->toFile(data->logMessage()->level())) { + ELPP->asyncLogQueue()->push(AsyncLogItem(*(data->logMessage()), *data, logLine)); + } +} + +// AsyncDispatchWorker +AsyncDispatchWorker::AsyncDispatchWorker() { + setContinueRunning(false); +} + +AsyncDispatchWorker::~AsyncDispatchWorker() { + setContinueRunning(false); + ELPP_INTERNAL_INFO(6, "Stopping dispatch worker - Cleaning log queue"); + clean(); + ELPP_INTERNAL_INFO(6, "Log queue cleaned"); +} + +bool AsyncDispatchWorker::clean(void) { + std::mutex m; + std::unique_lock lk(m); + cv.wait(lk, [] { return !ELPP->asyncLogQueue()->empty(); }); + emptyQueue(); + lk.unlock(); + cv.notify_one(); + return ELPP->asyncLogQueue()->empty(); +} + +void AsyncDispatchWorker::emptyQueue(void) { + while (!ELPP->asyncLogQueue()->empty()) { + AsyncLogItem data = ELPP->asyncLogQueue()->next(); + handle(&data); + base::threading::msleep(100); + } +} + +void AsyncDispatchWorker::start(void) { + base::threading::msleep(5000); // 5s (why?) + setContinueRunning(true); + std::thread t1(&AsyncDispatchWorker::run, this); + t1.join(); +} + +void AsyncDispatchWorker::handle(AsyncLogItem* logItem) { + LogDispatchData* data = logItem->data(); + LogMessage* logMessage = logItem->logMessage(); + Logger* logger = logMessage->logger(); + base::TypedConfigurations* conf = logger->typedConfigurations(); + base::type::string_t logLine = logItem->logLine(); + if (data->dispatchAction() == base::DispatchAction::NormalLog) { + if (conf->toFile(logMessage->level())) { + base::type::fstream_t* fs = conf->fileStream(logMessage->level()); + if (fs != nullptr) { + fs->write(logLine.c_str(), logLine.size()); + if (fs->fail()) { + ELPP_INTERNAL_ERROR("Unable to write log to file [" + << conf->filename(logMessage->level()) << "].\n" + << "Few possible reasons (could be something else):\n" << " * Permission denied\n" + << " * Disk full\n" << " * Disk is not writable", true); + } else { + if (ELPP->hasFlag(LoggingFlag::ImmediateFlush) || (logger->isFlushNeeded(logMessage->level()))) { + logger->flush(logMessage->level(), fs); + } + } + } else { + ELPP_INTERNAL_ERROR("Log file for [" << LevelHelper::convertToString(logMessage->level()) << "] " + << "has not been configured but [TO_FILE] is configured to TRUE. [Logger ID: " << logger->id() << "]", false); + } + } + } +# if defined(ELPP_SYSLOG) + else if (data->dispatchAction() == base::DispatchAction::SysLog) { + // Determine syslog priority + int sysLogPriority = 0; + if (logMessage->level() == Level::Fatal) + sysLogPriority = LOG_EMERG; + else if (logMessage->level() == Level::Error) + sysLogPriority = LOG_ERR; + else if (logMessage->level() == Level::Warning) + sysLogPriority = LOG_WARNING; + else if (logMessage->level() == Level::Info) + sysLogPriority = LOG_INFO; + else if (logMessage->level() == Level::Debug) + sysLogPriority = LOG_DEBUG; + else + sysLogPriority = LOG_NOTICE; +# if defined(ELPP_UNICODE) + char* line = base::utils::Str::wcharPtrToCharPtr(logLine.c_str()); + syslog(sysLogPriority, "%s", line); + free(line); +# else + syslog(sysLogPriority, "%s", logLine.c_str()); +# endif + } +# endif // defined(ELPP_SYSLOG) +} + +void AsyncDispatchWorker::run(void) { + while (continueRunning()) { + emptyQueue(); + base::threading::msleep(10); // 10ms + } +} +#endif // ELPP_ASYNC_LOGGING + +// DefaultLogBuilder + +base::type::string_t DefaultLogBuilder::build(const LogMessage* logMessage, bool appendNewLine) const { + base::TypedConfigurations* tc = logMessage->logger()->typedConfigurations(); + const base::LogFormat* logFormat = &tc->logFormat(logMessage->level()); + base::type::string_t logLine = logFormat->format(); + char buff[base::consts::kSourceFilenameMaxLength + base::consts::kSourceLineMaxLength] = ""; + const char* bufLim = buff + sizeof(buff); + if (logFormat->hasFlag(base::FormatFlags::AppName)) { + // App name + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kAppNameFormatSpecifier, + logMessage->logger()->parentApplicationName()); + } + if (logFormat->hasFlag(base::FormatFlags::ThreadId)) { + // Thread ID + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kThreadIdFormatSpecifier, + ELPP->getThreadName(base::threading::getCurrentThreadId())); + } + if (logFormat->hasFlag(base::FormatFlags::DateTime)) { + // DateTime + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kDateTimeFormatSpecifier, + base::utils::DateTime::getDateTime(logFormat->dateTimeFormat().c_str(), + &tc->subsecondPrecision(logMessage->level()))); + } + if (logFormat->hasFlag(base::FormatFlags::Function)) { + // Function + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFunctionFormatSpecifier, logMessage->func()); + } + if (logFormat->hasFlag(base::FormatFlags::File)) { + // File + base::utils::Str::clearBuff(buff, base::consts::kSourceFilenameMaxLength); + base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFileFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::FileBase)) { + // FileBase + base::utils::Str::clearBuff(buff, base::consts::kSourceFilenameMaxLength); + base::utils::File::buildBaseFilename(logMessage->file(), buff); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFileBaseFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::Line)) { + // Line + char* buf = base::utils::Str::clearBuff(buff, base::consts::kSourceLineMaxLength); + buf = base::utils::Str::convertAndAddToBuff(logMessage->line(), base::consts::kSourceLineMaxLength, buf, bufLim, false); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogLineFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::Location)) { + // Location + char* buf = base::utils::Str::clearBuff(buff, + base::consts::kSourceFilenameMaxLength + base::consts::kSourceLineMaxLength); + base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff); + buf = base::utils::Str::addToBuff(buff, buf, bufLim); + buf = base::utils::Str::addToBuff(":", buf, bufLim); + buf = base::utils::Str::convertAndAddToBuff(logMessage->line(), base::consts::kSourceLineMaxLength, buf, bufLim, + false); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogLocationFormatSpecifier, std::string(buff)); + } + if (logMessage->level() == Level::Verbose && logFormat->hasFlag(base::FormatFlags::VerboseLevel)) { + // Verbose level + char* buf = base::utils::Str::clearBuff(buff, 1); + buf = base::utils::Str::convertAndAddToBuff(logMessage->verboseLevel(), 1, buf, bufLim, false); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kVerboseLevelFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::LogMessage)) { + // Log message + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kMessageFormatSpecifier, logMessage->message()); + } +#if !defined(ELPP_DISABLE_CUSTOM_FORMAT_SPECIFIERS) + el::base::threading::ScopedLock lock_(ELPP->customFormatSpecifiersLock()); + ELPP_UNUSED(lock_); + for (std::vector::const_iterator it = ELPP->customFormatSpecifiers()->begin(); + it != ELPP->customFormatSpecifiers()->end(); ++it) { + std::string fs(it->formatSpecifier()); + base::type::string_t wcsFormatSpecifier(fs.begin(), fs.end()); + base::utils::Str::replaceFirstWithEscape(logLine, wcsFormatSpecifier, it->resolver()(logMessage)); + } +#endif // !defined(ELPP_DISABLE_CUSTOM_FORMAT_SPECIFIERS) + if (appendNewLine) logLine += ELPP_LITERAL("\n"); + return logLine; +} + +// LogDispatcher + +void LogDispatcher::dispatch(void) { + if (m_proceed && m_dispatchAction == base::DispatchAction::None) { + m_proceed = false; + } + if (!m_proceed) { + return; + } +#ifndef ELPP_NO_GLOBAL_LOCK + // see https://github.com/muflihun/easyloggingpp/issues/580 + // global lock is turned on by default unless + // ELPP_NO_GLOBAL_LOCK is defined + base::threading::ScopedLock scopedLock(ELPP->lock()); +#endif + base::TypedConfigurations* tc = m_logMessage->logger()->m_typedConfigurations; + if (ELPP->hasFlag(LoggingFlag::StrictLogFileSizeCheck)) { + tc->validateFileRolling(m_logMessage->level(), ELPP->preRollOutCallback()); + } + LogDispatchCallback* callback = nullptr; + LogDispatchData data; + for (const std::pair& h + : ELPP->m_logDispatchCallbacks) { + callback = h.second.get(); + if (callback != nullptr && callback->enabled()) { + data.setLogMessage(m_logMessage); + data.setDispatchAction(m_dispatchAction); + callback->handle(&data); + } + } +} + +// MessageBuilder + +void MessageBuilder::initialize(Logger* logger) { + m_logger = logger; + m_containerLogSeparator = ELPP->hasFlag(LoggingFlag::NewLineForContainer) ? + ELPP_LITERAL("\n ") : ELPP_LITERAL(", "); +} + +MessageBuilder& MessageBuilder::operator<<(const wchar_t* msg) { + if (msg == nullptr) { + m_logger->stream() << base::consts::kNullPointer; + return *this; + } +# if defined(ELPP_UNICODE) + m_logger->stream() << msg; +# else + char* buff_ = base::utils::Str::wcharPtrToCharPtr(msg); + m_logger->stream() << buff_; + free(buff_); +# endif + if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) { + m_logger->stream() << " "; + } + return *this; +} + +// Writer + +Writer& Writer::construct(Logger* logger, bool needLock) { + m_logger = logger; + initializeLogger(logger->id(), false, needLock); + m_messageBuilder.initialize(m_logger); + return *this; +} + +Writer& Writer::construct(int count, const char* loggerIds, ...) { + if (ELPP->hasFlag(LoggingFlag::MultiLoggerSupport)) { + va_list loggersList; + va_start(loggersList, loggerIds); + const char* id = loggerIds; + m_loggerIds.reserve(count); + for (int i = 0; i < count; ++i) { + m_loggerIds.push_back(std::string(id)); + id = va_arg(loggersList, const char*); + } + va_end(loggersList); + initializeLogger(m_loggerIds.at(0)); + } else { + initializeLogger(std::string(loggerIds)); + } + m_messageBuilder.initialize(m_logger); + return *this; +} + +void Writer::initializeLogger(const std::string& loggerId, bool lookup, bool needLock) { + if (lookup) { + m_logger = ELPP->registeredLoggers()->get(loggerId, ELPP->hasFlag(LoggingFlag::CreateLoggerAutomatically)); + } + if (m_logger == nullptr) { + { + if (!ELPP->registeredLoggers()->has(std::string(base::consts::kDefaultLoggerId))) { + // Somehow default logger has been unregistered. Not good! Register again + ELPP->registeredLoggers()->get(std::string(base::consts::kDefaultLoggerId)); + } + } + Writer(Level::Debug, m_file, m_line, m_func).construct(1, base::consts::kDefaultLoggerId) + << "Logger [" << loggerId << "] is not registered yet!"; + m_proceed = false; + } else { + if (needLock) { + m_logger->acquireLock(); // This should not be unlocked by checking m_proceed because + // m_proceed can be changed by lines below + } + if (ELPP->hasFlag(LoggingFlag::HierarchicalLogging)) { + m_proceed = m_level == Level::Verbose ? m_logger->enabled(m_level) : + LevelHelper::castToInt(m_level) >= LevelHelper::castToInt(ELPP->m_loggingLevel); + } else { + m_proceed = m_logger->enabled(m_level); + } + } +} + +void Writer::processDispatch() { +#if ELPP_LOGGING_ENABLED + if (ELPP->hasFlag(LoggingFlag::MultiLoggerSupport)) { + bool firstDispatched = false; + base::type::string_t logMessage; + std::size_t i = 0; + do { + if (m_proceed) { + if (firstDispatched) { + m_logger->stream() << logMessage; + } else { + firstDispatched = true; + if (m_loggerIds.size() > 1) { + logMessage = m_logger->stream().str(); + } + } + triggerDispatch(); + } else if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } + if (i + 1 < m_loggerIds.size()) { + initializeLogger(m_loggerIds.at(i + 1)); + } + } while (++i < m_loggerIds.size()); + } else { + if (m_proceed) { + triggerDispatch(); + } else if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } + } +#else + if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } +#endif // ELPP_LOGGING_ENABLED +} + +void Writer::triggerDispatch(void) { + try { + if (m_proceed) { + if (m_msg == nullptr) { + LogMessage msg(m_level, m_file, m_line, m_func, m_verboseLevel, + m_logger); + base::LogDispatcher(m_proceed, &msg, m_dispatchAction).dispatch(); + } else { + base::LogDispatcher(m_proceed, m_msg, m_dispatchAction).dispatch(); + } + } + if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } + if (m_proceed && m_level == Level::Fatal + && !ELPP->hasFlag(LoggingFlag::DisableApplicationAbortOnFatalLog)) { + base::Writer(Level::Warning, m_file, m_line, m_func).construct(1, base::consts::kDefaultLoggerId) + << "Aborting application. Reason: Fatal log at [" << m_file << ":" << m_line << "]"; + std::stringstream reasonStream; + reasonStream << "Fatal log at [" << m_file << ":" << m_line << "]" + << " If you wish to disable 'abort on fatal log' please use " + << "el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog)"; + base::utils::abort(1, reasonStream.str()); + } + m_proceed = false; + } + catch(std::exception & ex){ + // Extremely low memory situation; don't let exception be unhandled. + } +} + +// PErrorWriter + +PErrorWriter::~PErrorWriter(void) { + if (m_proceed) { +#if ELPP_COMPILER_MSVC + char buff[256]; + strerror_s(buff, 256, errno); + m_logger->stream() << ": " << buff << " [" << errno << "]"; +#else + m_logger->stream() << ": " << strerror(errno) << " [" << errno << "]"; +#endif + } +} + +// PerformanceTracker + +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + +PerformanceTracker::PerformanceTracker(const std::string& blockName, + base::TimestampUnit timestampUnit, + const std::string& loggerId, + bool scopedLog, Level level) : + m_blockName(blockName), m_timestampUnit(timestampUnit), m_loggerId(loggerId), m_scopedLog(scopedLog), + m_level(level), m_hasChecked(false), m_lastCheckpointId(std::string()), m_enabled(false) { +#if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + // We store it locally so that if user happen to change configuration by the end of scope + // or before calling checkpoint, we still depend on state of configuration at time of construction + el::Logger* loggerPtr = ELPP->registeredLoggers()->get(loggerId, false); + m_enabled = loggerPtr != nullptr && loggerPtr->m_typedConfigurations->performanceTracking(m_level); + if (m_enabled) { + base::utils::DateTime::gettimeofday(&m_startTime); + } +#endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED +} + +PerformanceTracker::~PerformanceTracker(void) { +#if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + if (m_enabled) { + base::threading::ScopedLock scopedLock(lock()); + if (m_scopedLog) { + base::utils::DateTime::gettimeofday(&m_endTime); + base::type::string_t formattedTime = getFormattedTimeTaken(); + PerformanceTrackingData data(PerformanceTrackingData::DataType::Complete); + data.init(this); + data.m_formattedTimeTaken = formattedTime; + PerformanceTrackingCallback* callback = nullptr; + for (const std::pair& h + : ELPP->m_performanceTrackingCallbacks) { + callback = h.second.get(); + if (callback != nullptr && callback->enabled()) { + callback->handle(&data); + } + } + } + } +#endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) +} + +void PerformanceTracker::checkpoint(const std::string& id, const char* file, base::type::LineNumber line, + const char* func) { +#if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + if (m_enabled) { + base::threading::ScopedLock scopedLock(lock()); + base::utils::DateTime::gettimeofday(&m_endTime); + base::type::string_t formattedTime = m_hasChecked ? getFormattedTimeTaken(m_lastCheckpointTime) : ELPP_LITERAL(""); + PerformanceTrackingData data(PerformanceTrackingData::DataType::Checkpoint); + data.init(this); + data.m_checkpointId = id; + data.m_file = file; + data.m_line = line; + data.m_func = func; + data.m_formattedTimeTaken = formattedTime; + PerformanceTrackingCallback* callback = nullptr; + for (const std::pair& h + : ELPP->m_performanceTrackingCallbacks) { + callback = h.second.get(); + if (callback != nullptr && callback->enabled()) { + callback->handle(&data); + } + } + base::utils::DateTime::gettimeofday(&m_lastCheckpointTime); + m_hasChecked = true; + m_lastCheckpointId = id; + } +#endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + ELPP_UNUSED(id); + ELPP_UNUSED(file); + ELPP_UNUSED(line); + ELPP_UNUSED(func); +} + +const base::type::string_t PerformanceTracker::getFormattedTimeTaken(struct timeval startTime) const { + if (ELPP->hasFlag(LoggingFlag::FixedTimeFormat)) { + base::type::stringstream_t ss; + ss << base::utils::DateTime::getTimeDifference(m_endTime, + startTime, m_timestampUnit) << " " << base::consts::kTimeFormats[static_cast + (m_timestampUnit)].unit; + return ss.str(); + } + return base::utils::DateTime::formatTime(base::utils::DateTime::getTimeDifference(m_endTime, + startTime, m_timestampUnit), m_timestampUnit); +} + +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + +namespace debug { +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) + +// StackTrace + +StackTrace::StackTraceEntry::StackTraceEntry(std::size_t index, const std::string& loc, const std::string& demang, + const std::string& hex, + const std::string& addr) : + m_index(index), + m_location(loc), + m_demangled(demang), + m_hex(hex), + m_addr(addr) { +} + +std::ostream& operator<<(std::ostream& ss, const StackTrace::StackTraceEntry& si) { + ss << "[" << si.m_index << "] " << si.m_location << (si.m_hex.empty() ? "" : "+") << si.m_hex << " " << si.m_addr << + (si.m_demangled.empty() ? "" : ":") << si.m_demangled; + return ss; +} + +std::ostream& operator<<(std::ostream& os, const StackTrace& st) { + std::vector::const_iterator it = st.m_stack.begin(); + while (it != st.m_stack.end()) { + os << " " << *it++ << "\n"; + } + return os; +} + +void StackTrace::generateNew(void) { +#ifdef HAVE_EXECINFO + m_stack.clear(); + void* stack[kMaxStack]; + unsigned int size = backtrace(stack, kMaxStack); + char** strings = backtrace_symbols(stack, size); + if (size > kStackStart) { // Skip StackTrace c'tor and generateNew + for (std::size_t i = kStackStart; i < size; ++i) { + std::string mangName; + std::string location; + std::string hex; + std::string addr; + + // entry: 2 crash.cpp.bin 0x0000000101552be5 _ZN2el4base5debug10StackTraceC1Ev + 21 + const std::string line(strings[i]); + auto p = line.find("_"); + if (p != std::string::npos) { + mangName = line.substr(p); + mangName = mangName.substr(0, mangName.find(" +")); + } + p = line.find("0x"); + if (p != std::string::npos) { + addr = line.substr(p); + addr = addr.substr(0, addr.find("_")); + } + // Perform demangling if parsed properly + if (!mangName.empty()) { + int status = 0; + char* demangName = abi::__cxa_demangle(mangName.data(), 0, 0, &status); + // if demangling is successful, output the demangled function name + if (status == 0) { + // Success (see http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/a01696.html) + StackTraceEntry entry(i - 1, location, demangName, hex, addr); + m_stack.push_back(entry); + } else { + // Not successful - we will use mangled name + StackTraceEntry entry(i - 1, location, mangName, hex, addr); + m_stack.push_back(entry); + } + free(demangName); + } else { + StackTraceEntry entry(i - 1, line); + m_stack.push_back(entry); + } + } + } + free(strings); +#else + ELPP_INTERNAL_INFO(1, "Stacktrace generation not supported for selected compiler"); +#endif // ELPP_STACKTRACE +} + +// Static helper functions + +static std::string crashReason(int sig) { + std::stringstream ss; + bool foundReason = false; + for (int i = 0; i < base::consts::kCrashSignalsCount; ++i) { + if (base::consts::kCrashSignals[i].numb == sig) { + ss << "Application has crashed due to [" << base::consts::kCrashSignals[i].name << "] signal"; + if (ELPP->hasFlag(el::LoggingFlag::LogDetailedCrashReason)) { + ss << std::endl << + " " << base::consts::kCrashSignals[i].brief << std::endl << + " " << base::consts::kCrashSignals[i].detail; + } + foundReason = true; + } + } + if (!foundReason) { + ss << "Application has crashed due to unknown signal [" << sig << "]"; + } + return ss.str(); +} +/// @brief Logs reason of crash from sig +static void logCrashReason(int sig, bool stackTraceIfAvailable, Level level, const char* logger) { + if (sig == SIGINT && ELPP->hasFlag(el::LoggingFlag::IgnoreSigInt)) { + return; + } + std::stringstream ss; + ss << "CRASH HANDLED; "; + ss << crashReason(sig); +#if ELPP_STACKTRACE + if (stackTraceIfAvailable) { + ss << std::endl << " ======= Backtrace: =========" << std::endl << base::debug::StackTrace(); + } +#else + ELPP_UNUSED(stackTraceIfAvailable); +#endif // ELPP_STACKTRACE + ELPP_WRITE_LOG(el::base::Writer, level, base::DispatchAction::NormalLog, logger) << ss.str(); +} + +static inline void crashAbort(int sig) { + base::utils::abort(sig, std::string()); +} + +/// @brief Default application crash handler +/// +/// @detail This function writes log using 'default' logger, prints stack trace for GCC based compilers and aborts program. +static inline void defaultCrashHandler(int sig) { + base::debug::logCrashReason(sig, true, Level::Fatal, base::consts::kDefaultLoggerId); + base::debug::crashAbort(sig); +} + +// CrashHandler + +CrashHandler::CrashHandler(bool useDefault) { + if (useDefault) { + setHandler(defaultCrashHandler); + } +} + +void CrashHandler::setHandler(const Handler& cHandler) { + m_handler = cHandler; +#if defined(ELPP_HANDLE_SIGABRT) + int i = 0; // SIGABRT is at base::consts::kCrashSignals[0] +#else + int i = 1; +#endif // defined(ELPP_HANDLE_SIGABRT) + for (; i < base::consts::kCrashSignalsCount; ++i) { + m_handler = signal(base::consts::kCrashSignals[i].numb, cHandler); + } +} + +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) +} // namespace debug +} // namespace base + +// el + +// Helpers + +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) + +void Helpers::crashAbort(int sig, const char* sourceFile, unsigned int long line) { + std::stringstream ss; + ss << base::debug::crashReason(sig).c_str(); + ss << " - [Called el::Helpers::crashAbort(" << sig << ")]"; + if (sourceFile != nullptr && strlen(sourceFile) > 0) { + ss << " - Source: " << sourceFile; + if (line > 0) + ss << ":" << line; + else + ss << " (line number not specified)"; + } + base::utils::abort(sig, ss.str()); +} + +void Helpers::logCrashReason(int sig, bool stackTraceIfAvailable, Level level, const char* logger) { + el::base::debug::logCrashReason(sig, stackTraceIfAvailable, level, logger); +} + +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) + +// Loggers + +Logger* Loggers::getLogger(const std::string& identity, bool registerIfNotAvailable) { + return ELPP->registeredLoggers()->get(identity, registerIfNotAvailable); +} + +void Loggers::setDefaultLogBuilder(el::LogBuilderPtr& logBuilderPtr) { + ELPP->registeredLoggers()->setDefaultLogBuilder(logBuilderPtr); +} + +bool Loggers::unregisterLogger(const std::string& identity) { + return ELPP->registeredLoggers()->remove(identity); +} + +bool Loggers::hasLogger(const std::string& identity) { + return ELPP->registeredLoggers()->has(identity); +} + +Logger* Loggers::reconfigureLogger(Logger* logger, const Configurations& configurations) { + if (!logger) return nullptr; + logger->configure(configurations); + return logger; +} + +Logger* Loggers::reconfigureLogger(const std::string& identity, const Configurations& configurations) { + return Loggers::reconfigureLogger(Loggers::getLogger(identity), configurations); +} + +Logger* Loggers::reconfigureLogger(const std::string& identity, ConfigurationType configurationType, + const std::string& value) { + Logger* logger = Loggers::getLogger(identity); + if (logger == nullptr) { + return nullptr; + } + logger->configurations()->set(Level::Global, configurationType, value); + logger->reconfigure(); + return logger; +} + +void Loggers::reconfigureAllLoggers(const Configurations& configurations) { + for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->begin(); + it != ELPP->registeredLoggers()->end(); ++it) { + Loggers::reconfigureLogger(it->second, configurations); + } +} + +void Loggers::reconfigureAllLoggers(Level level, ConfigurationType configurationType, + const std::string& value) { + for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->begin(); + it != ELPP->registeredLoggers()->end(); ++it) { + Logger* logger = it->second; + logger->configurations()->set(level, configurationType, value); + logger->reconfigure(); + } +} + +void Loggers::setDefaultConfigurations(const Configurations& configurations, bool reconfigureExistingLoggers) { + ELPP->registeredLoggers()->setDefaultConfigurations(configurations); + if (reconfigureExistingLoggers) { + Loggers::reconfigureAllLoggers(configurations); + } +} + +const Configurations* Loggers::defaultConfigurations(void) { + return ELPP->registeredLoggers()->defaultConfigurations(); +} + +const base::LogStreamsReferenceMapPtr Loggers::logStreamsReference(void) { + return ELPP->registeredLoggers()->logStreamsReference(); +} + +base::TypedConfigurations Loggers::defaultTypedConfigurations(void) { + return base::TypedConfigurations( + ELPP->registeredLoggers()->defaultConfigurations(), + ELPP->registeredLoggers()->logStreamsReference()); +} + +std::vector* Loggers::populateAllLoggerIds(std::vector* targetList) { + targetList->clear(); + for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->list().begin(); + it != ELPP->registeredLoggers()->list().end(); ++it) { + targetList->push_back(it->first); + } + return targetList; +} + +void Loggers::configureFromGlobal(const char* globalConfigurationFilePath) { + std::ifstream gcfStream(globalConfigurationFilePath, std::ifstream::in); + ELPP_ASSERT(gcfStream.is_open(), "Unable to open global configuration file [" << globalConfigurationFilePath + << "] for parsing."); + std::string line = std::string(); + std::stringstream ss; + Logger* logger = nullptr; + auto configure = [&](void) { + ELPP_INTERNAL_INFO(8, "Configuring logger: '" << logger->id() << "' with configurations \n" << ss.str() + << "\n--------------"); + Configurations c; + c.parseFromText(ss.str()); + logger->configure(c); + }; + while (gcfStream.good()) { + std::getline(gcfStream, line); + ELPP_INTERNAL_INFO(1, "Parsing line: " << line); + base::utils::Str::trim(line); + if (Configurations::Parser::isComment(line)) continue; + Configurations::Parser::ignoreComments(&line); + base::utils::Str::trim(line); + if (line.size() > 2 && base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationLoggerId))) { + if (!ss.str().empty() && logger != nullptr) { + configure(); + } + ss.str(std::string("")); + line = line.substr(2); + base::utils::Str::trim(line); + if (line.size() > 1) { + ELPP_INTERNAL_INFO(1, "Getting logger: '" << line << "'"); + logger = getLogger(line); + } + } else { + ss << line << "\n"; + } + } + if (!ss.str().empty() && logger != nullptr) { + configure(); + } +} + +bool Loggers::configureFromArg(const char* argKey) { +#if defined(ELPP_DISABLE_CONFIGURATION_FROM_PROGRAM_ARGS) + ELPP_UNUSED(argKey); +#else + if (!Helpers::commandLineArgs()->hasParamWithValue(argKey)) { + return false; + } + configureFromGlobal(Helpers::commandLineArgs()->getParamValue(argKey)); +#endif // defined(ELPP_DISABLE_CONFIGURATION_FROM_PROGRAM_ARGS) + return true; +} + +void Loggers::flushAll(void) { + ELPP->registeredLoggers()->flushAll(); +} + +void Loggers::setVerboseLevel(base::type::VerboseLevel level) { + ELPP->vRegistry()->setLevel(level); +} + +base::type::VerboseLevel Loggers::verboseLevel(void) { + return ELPP->vRegistry()->level(); +} + +void Loggers::setVModules(const char* modules) { + if (ELPP->vRegistry()->vModulesEnabled()) { + ELPP->vRegistry()->setModules(modules); + } +} + +void Loggers::clearVModules(void) { + ELPP->vRegistry()->clearModules(); +} + +// VersionInfo + +const std::string VersionInfo::version(void) { + return std::string("9.96.7"); +} +/// @brief Release date of current version +const std::string VersionInfo::releaseDate(void) { + return std::string("24-11-2018 0728hrs"); +} + +} // namespace el diff --git a/src/utils/easylogging++.h b/src/utils/easylogging++.h new file mode 100644 index 0000000..6e81edf --- /dev/null +++ b/src/utils/easylogging++.h @@ -0,0 +1,4576 @@ +// +// Bismillah ar-Rahmaan ar-Raheem +// +// Easylogging++ v9.96.7 +// Single-header only, cross-platform logging library for C++ applications +// +// Copyright (c) 2012-2018 Amrayn Web Services +// Copyright (c) 2012-2018 @abumusamq +// +// This library is released under the MIT Licence. +// https://github.com/amrayn/easyloggingpp/blob/master/LICENSE +// +// https://amrayn.com +// http://muflihun.com +// + +#ifndef EASYLOGGINGPP_H +#define EASYLOGGINGPP_H +// Compilers and C++0x/C++11 Evaluation +#if __cplusplus >= 201103L +# define ELPP_CXX11 1 +#endif // __cplusplus >= 201103L +#if (defined(__GNUC__)) +# define ELPP_COMPILER_GCC 1 +#else +# define ELPP_COMPILER_GCC 0 +#endif +#if ELPP_COMPILER_GCC +# define ELPP_GCC_VERSION (__GNUC__ * 10000 \ ++ __GNUC_MINOR__ * 100 \ ++ __GNUC_PATCHLEVEL__) +# if defined(__GXX_EXPERIMENTAL_CXX0X__) +# define ELPP_CXX0X 1 +# endif +#endif +// Visual C++ +#if defined(_MSC_VER) +# define ELPP_COMPILER_MSVC 1 +#else +# define ELPP_COMPILER_MSVC 0 +#endif +#define ELPP_CRT_DBG_WARNINGS ELPP_COMPILER_MSVC +#if ELPP_COMPILER_MSVC +# if (_MSC_VER == 1600) +# define ELPP_CXX0X 1 +# elif(_MSC_VER >= 1700) +# define ELPP_CXX11 1 +# endif +#endif +// Clang++ +#if (defined(__clang__) && (__clang__ == 1)) +# define ELPP_COMPILER_CLANG 1 +#else +# define ELPP_COMPILER_CLANG 0 +#endif +#if ELPP_COMPILER_CLANG +# if __has_include() +# include // Make __GLIBCXX__ defined when using libstdc++ +# if !defined(__GLIBCXX__) || __GLIBCXX__ >= 20150426 +# define ELPP_CLANG_SUPPORTS_THREAD +# endif // !defined(__GLIBCXX__) || __GLIBCXX__ >= 20150426 +# endif // __has_include() +#endif +#if (defined(__MINGW32__) || defined(__MINGW64__)) +# define ELPP_MINGW 1 +#else +# define ELPP_MINGW 0 +#endif +#if (defined(__CYGWIN__) && (__CYGWIN__ == 1)) +# define ELPP_CYGWIN 1 +#else +# define ELPP_CYGWIN 0 +#endif +#if (defined(__INTEL_COMPILER)) +# define ELPP_COMPILER_INTEL 1 +#else +# define ELPP_COMPILER_INTEL 0 +#endif +// Operating System Evaluation +// Windows +#if (defined(_WIN32) || defined(_WIN64)) +# define ELPP_OS_WINDOWS 1 +#else +# define ELPP_OS_WINDOWS 0 +#endif +// Linux +#if (defined(__linux) || defined(__linux__)) +# define ELPP_OS_LINUX 1 +#else +# define ELPP_OS_LINUX 0 +#endif +#if (defined(__APPLE__)) +# define ELPP_OS_MAC 1 +#else +# define ELPP_OS_MAC 0 +#endif +#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) +# define ELPP_OS_FREEBSD 1 +#else +# define ELPP_OS_FREEBSD 0 +#endif +#if (defined(__sun)) +# define ELPP_OS_SOLARIS 1 +#else +# define ELPP_OS_SOLARIS 0 +#endif +#if (defined(_AIX)) +# define ELPP_OS_AIX 1 +#else +# define ELPP_OS_AIX 0 +#endif +#if (defined(__NetBSD__)) +# define ELPP_OS_NETBSD 1 +#else +# define ELPP_OS_NETBSD 0 +#endif +#if defined(__EMSCRIPTEN__) +# define ELPP_OS_EMSCRIPTEN 1 +#else +# define ELPP_OS_EMSCRIPTEN 0 +#endif +#if (defined(__QNX__) || defined(__QNXNTO__)) +# define ELPP_OS_QNX 1 +#else +# define ELPP_OS_QNX 0 +#endif +// Unix +#if ((ELPP_OS_LINUX || ELPP_OS_MAC || ELPP_OS_FREEBSD || ELPP_OS_NETBSD || ELPP_OS_SOLARIS || ELPP_OS_AIX || ELPP_OS_EMSCRIPTEN || ELPP_OS_QNX) && (!ELPP_OS_WINDOWS)) +# define ELPP_OS_UNIX 1 +#else +# define ELPP_OS_UNIX 0 +#endif +#if (defined(__ANDROID__)) +# define ELPP_OS_ANDROID 1 +#else +# define ELPP_OS_ANDROID 0 +#endif +// Evaluating Cygwin as *nix OS +#if !ELPP_OS_UNIX && !ELPP_OS_WINDOWS && ELPP_CYGWIN +# undef ELPP_OS_UNIX +# undef ELPP_OS_LINUX +# define ELPP_OS_UNIX 1 +# define ELPP_OS_LINUX 1 +#endif // !ELPP_OS_UNIX && !ELPP_OS_WINDOWS && ELPP_CYGWIN +#if !defined(ELPP_INTERNAL_DEBUGGING_OUT_INFO) +# define ELPP_INTERNAL_DEBUGGING_OUT_INFO std::cout +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +#if !defined(ELPP_INTERNAL_DEBUGGING_OUT_ERROR) +# define ELPP_INTERNAL_DEBUGGING_OUT_ERROR std::cerr +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +#if !defined(ELPP_INTERNAL_DEBUGGING_ENDL) +# define ELPP_INTERNAL_DEBUGGING_ENDL std::endl +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +#if !defined(ELPP_INTERNAL_DEBUGGING_MSG) +# define ELPP_INTERNAL_DEBUGGING_MSG(msg) msg +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +// Internal Assertions and errors +#if !defined(ELPP_DISABLE_ASSERT) +# if (defined(ELPP_DEBUG_ASSERT_FAILURE)) +# define ELPP_ASSERT(expr, msg) if (!(expr)) { \ +std::stringstream internalInfoStream; internalInfoStream << msg; \ +ELPP_INTERNAL_DEBUGGING_OUT_ERROR \ +<< "EASYLOGGING++ ASSERTION FAILED (LINE: " << __LINE__ << ") [" #expr << "] WITH MESSAGE \"" \ +<< ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << "\"" << ELPP_INTERNAL_DEBUGGING_ENDL; base::utils::abort(1, \ +"ELPP Assertion failure, please define ELPP_DEBUG_ASSERT_FAILURE"); } +# else +# define ELPP_ASSERT(expr, msg) if (!(expr)) { \ +std::stringstream internalInfoStream; internalInfoStream << msg; \ +ELPP_INTERNAL_DEBUGGING_OUT_ERROR\ +<< "ASSERTION FAILURE FROM EASYLOGGING++ (LINE: " \ +<< __LINE__ << ") [" #expr << "] WITH MESSAGE \"" << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << "\"" \ +<< ELPP_INTERNAL_DEBUGGING_ENDL; } +# endif // (defined(ELPP_DEBUG_ASSERT_FAILURE)) +#else +# define ELPP_ASSERT(x, y) +#endif //(!defined(ELPP_DISABLE_ASSERT) +#if ELPP_COMPILER_MSVC +# define ELPP_INTERNAL_DEBUGGING_WRITE_PERROR \ +{ char buff[256]; strerror_s(buff, 256, errno); \ +ELPP_INTERNAL_DEBUGGING_OUT_ERROR << ": " << buff << " [" << errno << "]";} (void)0 +#else +# define ELPP_INTERNAL_DEBUGGING_WRITE_PERROR \ +ELPP_INTERNAL_DEBUGGING_OUT_ERROR << ": " << strerror(errno) << " [" << errno << "]"; (void)0 +#endif // ELPP_COMPILER_MSVC +#if defined(ELPP_DEBUG_ERRORS) +# if !defined(ELPP_INTERNAL_ERROR) +# define ELPP_INTERNAL_ERROR(msg, pe) { \ +std::stringstream internalInfoStream; internalInfoStream << " " << msg; \ +ELPP_INTERNAL_DEBUGGING_OUT_ERROR \ +<< "ERROR FROM EASYLOGGING++ (LINE: " << __LINE__ << ") " \ +<< ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << ELPP_INTERNAL_DEBUGGING_ENDL; \ +if (pe) { ELPP_INTERNAL_DEBUGGING_OUT_ERROR << " "; ELPP_INTERNAL_DEBUGGING_WRITE_PERROR; }} (void)0 +# endif +#else +# undef ELPP_INTERNAL_INFO +# define ELPP_INTERNAL_ERROR(msg, pe) +#endif // defined(ELPP_DEBUG_ERRORS) +#if (defined(ELPP_DEBUG_INFO)) +# if !(defined(ELPP_INTERNAL_INFO_LEVEL)) +# define ELPP_INTERNAL_INFO_LEVEL 9 +# endif // !(defined(ELPP_INTERNAL_INFO_LEVEL)) +# if !defined(ELPP_INTERNAL_INFO) +# define ELPP_INTERNAL_INFO(lvl, msg) { if (lvl <= ELPP_INTERNAL_INFO_LEVEL) { \ +std::stringstream internalInfoStream; internalInfoStream << " " << msg; \ +ELPP_INTERNAL_DEBUGGING_OUT_INFO << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) \ +<< ELPP_INTERNAL_DEBUGGING_ENDL; }} +# endif +#else +# undef ELPP_INTERNAL_INFO +# define ELPP_INTERNAL_INFO(lvl, msg) +#endif // (defined(ELPP_DEBUG_INFO)) +#if (defined(ELPP_FEATURE_ALL)) || (defined(ELPP_FEATURE_CRASH_LOG)) +# if (ELPP_COMPILER_GCC && !ELPP_MINGW && !ELPP_CYGWIN && !ELPP_OS_ANDROID && !ELPP_OS_EMSCRIPTEN && !ELPP_OS_QNX) +# define ELPP_STACKTRACE 1 +# else +# if ELPP_COMPILER_MSVC +# pragma message("Stack trace not available for this compiler") +# else +# warning "Stack trace not available for this compiler"; +# endif // ELPP_COMPILER_MSVC +# define ELPP_STACKTRACE 0 +# endif // ELPP_COMPILER_GCC +#else +# define ELPP_STACKTRACE 0 +#endif // (defined(ELPP_FEATURE_ALL)) || (defined(ELPP_FEATURE_CRASH_LOG)) +// Miscellaneous macros +#define ELPP_UNUSED(x) (void)x +#if ELPP_OS_UNIX +// Log file permissions for unix-based systems +# define ELPP_LOG_PERMS S_IRUSR | S_IWUSR | S_IXUSR | S_IWGRP | S_IRGRP | S_IXGRP | S_IWOTH | S_IXOTH +#endif // ELPP_OS_UNIX +#if defined(ELPP_AS_DLL) && ELPP_COMPILER_MSVC +# if defined(ELPP_EXPORT_SYMBOLS) +# define ELPP_EXPORT __declspec(dllexport) +# else +# define ELPP_EXPORT __declspec(dllimport) +# endif // defined(ELPP_EXPORT_SYMBOLS) +#else +# define ELPP_EXPORT +#endif // defined(ELPP_AS_DLL) && ELPP_COMPILER_MSVC +// Some special functions that are VC++ specific +#undef STRTOK +#undef STRERROR +#undef STRCAT +#undef STRCPY +#if ELPP_CRT_DBG_WARNINGS +# define STRTOK(a, b, c) strtok_s(a, b, c) +# define STRERROR(a, b, c) strerror_s(a, b, c) +# define STRCAT(a, b, len) strcat_s(a, len, b) +# define STRCPY(a, b, len) strcpy_s(a, len, b) +#else +# define STRTOK(a, b, c) strtok(a, b) +# define STRERROR(a, b, c) strerror(c) +# define STRCAT(a, b, len) strcat(a, b) +# define STRCPY(a, b, len) strcpy(a, b) +#endif +// Compiler specific support evaluations +#if (ELPP_MINGW && !defined(ELPP_FORCE_USE_STD_THREAD)) +# define ELPP_USE_STD_THREADING 0 +#else +# if ((ELPP_COMPILER_CLANG && defined(ELPP_CLANG_SUPPORTS_THREAD)) || \ + (!ELPP_COMPILER_CLANG && defined(ELPP_CXX11)) || \ + defined(ELPP_FORCE_USE_STD_THREAD)) +# define ELPP_USE_STD_THREADING 1 +# else +# define ELPP_USE_STD_THREADING 0 +# endif +#endif +#undef ELPP_FINAL +#if ELPP_COMPILER_INTEL || (ELPP_GCC_VERSION < 40702) +# define ELPP_FINAL +#else +# define ELPP_FINAL final +#endif // ELPP_COMPILER_INTEL || (ELPP_GCC_VERSION < 40702) +#if defined(ELPP_EXPERIMENTAL_ASYNC) +# define ELPP_ASYNC_LOGGING 1 +#else +# define ELPP_ASYNC_LOGGING 0 +#endif // defined(ELPP_EXPERIMENTAL_ASYNC) +#if defined(ELPP_THREAD_SAFE) || ELPP_ASYNC_LOGGING +# define ELPP_THREADING_ENABLED 1 +#else +# define ELPP_THREADING_ENABLED 0 +#endif // defined(ELPP_THREAD_SAFE) || ELPP_ASYNC_LOGGING +// Function macro ELPP_FUNC +#undef ELPP_FUNC +#if ELPP_COMPILER_MSVC // Visual C++ +# define ELPP_FUNC __FUNCSIG__ +#elif ELPP_COMPILER_GCC // GCC +# define ELPP_FUNC __PRETTY_FUNCTION__ +#elif ELPP_COMPILER_INTEL // Intel C++ +# define ELPP_FUNC __PRETTY_FUNCTION__ +#elif ELPP_COMPILER_CLANG // Clang++ +# define ELPP_FUNC __PRETTY_FUNCTION__ +#else +# if defined(__func__) +# define ELPP_FUNC __func__ +# else +# define ELPP_FUNC "" +# endif // defined(__func__) +#endif // defined(_MSC_VER) +#undef ELPP_VARIADIC_TEMPLATES_SUPPORTED +// Keep following line commented until features are fixed +#define ELPP_VARIADIC_TEMPLATES_SUPPORTED \ +(ELPP_COMPILER_GCC || ELPP_COMPILER_CLANG || ELPP_COMPILER_INTEL || (ELPP_COMPILER_MSVC && _MSC_VER >= 1800)) +// Logging Enable/Disable macros +#if defined(ELPP_DISABLE_LOGS) +#define ELPP_LOGGING_ENABLED 0 +#else +#define ELPP_LOGGING_ENABLED 1 +#endif +#if (!defined(ELPP_DISABLE_DEBUG_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_DEBUG_LOG 1 +#else +# define ELPP_DEBUG_LOG 0 +#endif // (!defined(ELPP_DISABLE_DEBUG_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_INFO_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_INFO_LOG 1 +#else +# define ELPP_INFO_LOG 0 +#endif // (!defined(ELPP_DISABLE_INFO_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_WARNING_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_WARNING_LOG 1 +#else +# define ELPP_WARNING_LOG 0 +#endif // (!defined(ELPP_DISABLE_WARNING_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_ERROR_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_ERROR_LOG 1 +#else +# define ELPP_ERROR_LOG 0 +#endif // (!defined(ELPP_DISABLE_ERROR_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_FATAL_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_FATAL_LOG 1 +#else +# define ELPP_FATAL_LOG 0 +#endif // (!defined(ELPP_DISABLE_FATAL_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_TRACE_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_TRACE_LOG 1 +#else +# define ELPP_TRACE_LOG 0 +#endif // (!defined(ELPP_DISABLE_TRACE_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_VERBOSE_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_VERBOSE_LOG 1 +#else +# define ELPP_VERBOSE_LOG 0 +#endif // (!defined(ELPP_DISABLE_VERBOSE_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!(ELPP_CXX0X || ELPP_CXX11)) +# error "C++0x (or higher) support not detected! (Is `-std=c++11' missing?)" +#endif // (!(ELPP_CXX0X || ELPP_CXX11)) +// Headers +#if defined(ELPP_SYSLOG) +# include +#endif // defined(ELPP_SYSLOG) +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(ELPP_UNICODE) +# include +# if ELPP_OS_WINDOWS +# include +# endif // ELPP_OS_WINDOWS +#endif // defined(ELPP_UNICODE) +#ifdef HAVE_EXECINFO +# include +# include +#endif // ENABLE_EXECINFO +#if ELPP_OS_ANDROID +# include +#endif // ELPP_OS_ANDROID +#if ELPP_OS_UNIX +# include +# include +#elif ELPP_OS_WINDOWS +# include +# include +# if defined(WIN32_LEAN_AND_MEAN) +# if defined(ELPP_WINSOCK2) +# include +# else +# include +# endif // defined(ELPP_WINSOCK2) +# endif // defined(WIN32_LEAN_AND_MEAN) +#endif // ELPP_OS_UNIX +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if ELPP_THREADING_ENABLED +# if ELPP_USE_STD_THREADING +# include +# include +# else +# if ELPP_OS_UNIX +# include +# endif // ELPP_OS_UNIX +# endif // ELPP_USE_STD_THREADING +#endif // ELPP_THREADING_ENABLED +#if ELPP_ASYNC_LOGGING +# if defined(ELPP_NO_SLEEP_FOR) +# include +# endif // defined(ELPP_NO_SLEEP_FOR) +# include +# include +# include +#endif // ELPP_ASYNC_LOGGING +#if defined(ELPP_STL_LOGGING) +// For logging STL based templates +# include +# include +# include +# include +# include +# include +# if defined(ELPP_LOG_STD_ARRAY) +# include +# endif // defined(ELPP_LOG_STD_ARRAY) +# if defined(ELPP_LOG_UNORDERED_SET) +# include +# endif // defined(ELPP_UNORDERED_SET) +#endif // defined(ELPP_STL_LOGGING) +#if defined(ELPP_QT_LOGGING) +// For logging Qt based classes & templates +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +#endif // defined(ELPP_QT_LOGGING) +#if defined(ELPP_BOOST_LOGGING) +// For logging boost based classes & templates +# include +# include +# include +# include +# include +# include +# include +# include +#endif // defined(ELPP_BOOST_LOGGING) +#if defined(ELPP_WXWIDGETS_LOGGING) +// For logging wxWidgets based classes & templates +# include +#endif // defined(ELPP_WXWIDGETS_LOGGING) +#if defined(ELPP_UTC_DATETIME) +# define elpptime_r gmtime_r +# define elpptime_s gmtime_s +# define elpptime gmtime +#else +# define elpptime_r localtime_r +# define elpptime_s localtime_s +# define elpptime localtime +#endif // defined(ELPP_UTC_DATETIME) +// Forward declarations +namespace el { +class Logger; +class LogMessage; +class PerformanceTrackingData; +class Loggers; +class Helpers; +template class Callback; +class LogDispatchCallback; +class PerformanceTrackingCallback; +class LoggerRegistrationCallback; +class LogDispatchData; +namespace base { +class Storage; +class RegisteredLoggers; +class PerformanceTracker; +class MessageBuilder; +class Writer; +class PErrorWriter; +class LogDispatcher; +class DefaultLogBuilder; +class DefaultLogDispatchCallback; +#if ELPP_ASYNC_LOGGING +class AsyncLogDispatchCallback; +class AsyncDispatchWorker; +#endif // ELPP_ASYNC_LOGGING +class DefaultPerformanceTrackingCallback; +} // namespace base +} // namespace el +/// @brief Easylogging++ entry namespace +namespace el { +/// @brief Namespace containing base/internal functionality used by Easylogging++ +namespace base { +/// @brief Data types used by Easylogging++ +namespace type { +#undef ELPP_LITERAL +#undef ELPP_STRLEN +#undef ELPP_COUT +#if defined(ELPP_UNICODE) +# define ELPP_LITERAL(txt) L##txt +# define ELPP_STRLEN wcslen +# if defined ELPP_CUSTOM_COUT +# define ELPP_COUT ELPP_CUSTOM_COUT +# else +# define ELPP_COUT std::wcout +# endif // defined ELPP_CUSTOM_COUT +typedef wchar_t char_t; +typedef std::wstring string_t; +typedef std::wstringstream stringstream_t; +typedef std::wfstream fstream_t; +typedef std::wostream ostream_t; +#else +# define ELPP_LITERAL(txt) txt +# define ELPP_STRLEN strlen +# if defined ELPP_CUSTOM_COUT +# define ELPP_COUT ELPP_CUSTOM_COUT +# else +# define ELPP_COUT std::cout +# endif // defined ELPP_CUSTOM_COUT +typedef char char_t; +typedef std::string string_t; +typedef std::stringstream stringstream_t; +typedef std::fstream fstream_t; +typedef std::ostream ostream_t; +#endif // defined(ELPP_UNICODE) +#if defined(ELPP_CUSTOM_COUT_LINE) +# define ELPP_COUT_LINE(logLine) ELPP_CUSTOM_COUT_LINE(logLine) +#else +# define ELPP_COUT_LINE(logLine) logLine << std::flush +#endif // defined(ELPP_CUSTOM_COUT_LINE) +typedef unsigned int EnumType; +typedef unsigned short VerboseLevel; +typedef unsigned long int LineNumber; +typedef std::shared_ptr StoragePointer; +typedef std::shared_ptr LogDispatchCallbackPtr; +typedef std::shared_ptr PerformanceTrackingCallbackPtr; +typedef std::shared_ptr LoggerRegistrationCallbackPtr; +typedef std::unique_ptr PerformanceTrackerPtr; +} // namespace type +/// @brief Internal helper class that prevent copy constructor for class +/// +/// @detail When using this class simply inherit it privately +class NoCopy { + protected: + NoCopy(void) {} + private: + NoCopy(const NoCopy&); + NoCopy& operator=(const NoCopy&); +}; +/// @brief Internal helper class that makes all default constructors private. +/// +/// @detail This prevents initializing class making it static unless an explicit constructor is declared. +/// When using this class simply inherit it privately +class StaticClass { + private: + StaticClass(void); + StaticClass(const StaticClass&); + StaticClass& operator=(const StaticClass&); +}; +} // namespace base +/// @brief Represents enumeration for severity level used to determine level of logging +/// +/// @detail With Easylogging++, developers may disable or enable any level regardless of +/// what the severity is. Or they can choose to log using hierarchical logging flag +enum class Level : base::type::EnumType { + /// @brief Generic level that represents all the levels. Useful when setting global configuration for all levels + Global = 1, + /// @brief Information that can be useful to back-trace certain events - mostly useful than debug logs. + Trace = 2, + /// @brief Informational events most useful for developers to debug application + Debug = 4, + /// @brief Severe error information that will presumably abort application + Fatal = 8, + /// @brief Information representing errors in application but application will keep running + Error = 16, + /// @brief Useful when application has potentially harmful situations + Warning = 32, + /// @brief Information that can be highly useful and vary with verbose logging level. + Verbose = 64, + /// @brief Mainly useful to represent current progress of application + Info = 128, + /// @brief Represents unknown level + Unknown = 1010 +}; +} // namespace el +namespace std { +template<> struct hash { + public: + std::size_t operator()(const el::Level& l) const { + return hash {}(static_cast(l)); + } +}; +} +namespace el { +/// @brief Static class that contains helper functions for el::Level +class LevelHelper : base::StaticClass { + public: + /// @brief Represents minimum valid level. Useful when iterating through enum. + static const base::type::EnumType kMinValid = static_cast(Level::Trace); + /// @brief Represents maximum valid level. This is used internally and you should not need it. + static const base::type::EnumType kMaxValid = static_cast(Level::Info); + /// @brief Casts level to int, useful for iterating through enum. + static base::type::EnumType castToInt(Level level) { + return static_cast(level); + } + /// @brief Casts int(ushort) to level, useful for iterating through enum. + static Level castFromInt(base::type::EnumType l) { + return static_cast(l); + } + /// @brief Converts level to associated const char* + /// @return Upper case string based level. + static const char* convertToString(Level level); + /// @brief Converts from levelStr to Level + /// @param levelStr Upper case string based level. + /// Lower case is also valid but providing upper case is recommended. + static Level convertFromString(const char* levelStr); + /// @brief Applies specified function to each level starting from startIndex + /// @param startIndex initial value to start the iteration from. This is passed as pointer and + /// is left-shifted so this can be used inside function (fn) to represent current level. + /// @param fn function to apply with each level. This bool represent whether or not to stop iterating through levels. + static void forEachLevel(base::type::EnumType* startIndex, const std::function& fn); +}; +/// @brief Represents enumeration of ConfigurationType used to configure or access certain aspect +/// of logging +enum class ConfigurationType : base::type::EnumType { + /// @brief Determines whether or not corresponding level and logger of logging is enabled + /// You may disable all logs by using el::Level::Global + Enabled = 1, + /// @brief Whether or not to write corresponding log to log file + ToFile = 2, + /// @brief Whether or not to write corresponding level and logger log to standard output. + /// By standard output meaning termnal, command prompt etc + ToStandardOutput = 4, + /// @brief Determines format of logging corresponding level and logger. + Format = 8, + /// @brief Determines log file (full path) to write logs to for corresponding level and logger + Filename = 16, + /// @brief Specifies precision of the subsecond part. It should be within range (1-6). + SubsecondPrecision = 32, + /// @brief Alias of SubsecondPrecision (for backward compatibility) + MillisecondsWidth = SubsecondPrecision, + /// @brief Determines whether or not performance tracking is enabled. + /// + /// @detail This does not depend on logger or level. Performance tracking always uses 'performance' logger + PerformanceTracking = 64, + /// @brief Specifies log file max size. + /// + /// @detail If file size of corresponding log file (for corresponding level) is >= specified size, log file will + /// be truncated and re-initiated. + MaxLogFileSize = 128, + /// @brief Specifies number of log entries to hold until we flush pending log data + LogFlushThreshold = 256, + /// @brief Represents unknown configuration + Unknown = 1010 +}; +/// @brief Static class that contains helper functions for el::ConfigurationType +class ConfigurationTypeHelper : base::StaticClass { + public: + /// @brief Represents minimum valid configuration type. Useful when iterating through enum. + static const base::type::EnumType kMinValid = static_cast(ConfigurationType::Enabled); + /// @brief Represents maximum valid configuration type. This is used internally and you should not need it. + static const base::type::EnumType kMaxValid = static_cast(ConfigurationType::MaxLogFileSize); + /// @brief Casts configuration type to int, useful for iterating through enum. + static base::type::EnumType castToInt(ConfigurationType configurationType) { + return static_cast(configurationType); + } + /// @brief Casts int(ushort) to configuration type, useful for iterating through enum. + static ConfigurationType castFromInt(base::type::EnumType c) { + return static_cast(c); + } + /// @brief Converts configuration type to associated const char* + /// @returns Upper case string based configuration type. + static const char* convertToString(ConfigurationType configurationType); + /// @brief Converts from configStr to ConfigurationType + /// @param configStr Upper case string based configuration type. + /// Lower case is also valid but providing upper case is recommended. + static ConfigurationType convertFromString(const char* configStr); + /// @brief Applies specified function to each configuration type starting from startIndex + /// @param startIndex initial value to start the iteration from. This is passed by pointer and is left-shifted + /// so this can be used inside function (fn) to represent current configuration type. + /// @param fn function to apply with each configuration type. + /// This bool represent whether or not to stop iterating through configurations. + static inline void forEachConfigType(base::type::EnumType* startIndex, const std::function& fn); +}; +/// @brief Flags used while writing logs. This flags are set by user +enum class LoggingFlag : base::type::EnumType { + /// @brief Makes sure we have new line for each container log entry + NewLineForContainer = 1, + /// @brief Makes sure if -vmodule is used and does not specifies a module, then verbose + /// logging is allowed via that module. + AllowVerboseIfModuleNotSpecified = 2, + /// @brief When handling crashes by default, detailed crash reason will be logged as well + LogDetailedCrashReason = 4, + /// @brief Allows to disable application abortion when logged using FATAL level + DisableApplicationAbortOnFatalLog = 8, + /// @brief Flushes log with every log-entry (performance sensitive) - Disabled by default + ImmediateFlush = 16, + /// @brief Enables strict file rolling + StrictLogFileSizeCheck = 32, + /// @brief Make terminal output colorful for supported terminals + ColoredTerminalOutput = 64, + /// @brief Supports use of multiple logging in same macro, e.g, CLOG(INFO, "default", "network") + MultiLoggerSupport = 128, + /// @brief Disables comparing performance tracker's checkpoints + DisablePerformanceTrackingCheckpointComparison = 256, + /// @brief Disable VModules + DisableVModules = 512, + /// @brief Disable VModules extensions + DisableVModulesExtensions = 1024, + /// @brief Enables hierarchical logging + HierarchicalLogging = 2048, + /// @brief Creates logger automatically when not available + CreateLoggerAutomatically = 4096, + /// @brief Adds spaces b/w logs that separated by left-shift operator + AutoSpacing = 8192, + /// @brief Preserves time format and does not convert it to sec, hour etc (performance tracking only) + FixedTimeFormat = 16384, + // @brief Ignore SIGINT or crash + IgnoreSigInt = 32768, +}; +namespace base { +/// @brief Namespace containing constants used internally. +namespace consts { +static const char kFormatSpecifierCharValue = 'v'; +static const char kFormatSpecifierChar = '%'; +static const unsigned int kMaxLogPerCounter = 100000; +static const unsigned int kMaxLogPerContainer = 100; +static const unsigned int kDefaultSubsecondPrecision = 3; + +#ifdef ELPP_DEFAULT_LOGGER +static const char* kDefaultLoggerId = ELPP_DEFAULT_LOGGER; +#else +static const char* kDefaultLoggerId = "default"; +#endif + +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) +#ifdef ELPP_DEFAULT_PERFORMANCE_LOGGER +static const char* kPerformanceLoggerId = ELPP_DEFAULT_PERFORMANCE_LOGGER; +#else +static const char* kPerformanceLoggerId = "performance"; +#endif // ELPP_DEFAULT_PERFORMANCE_LOGGER +#endif + +#if defined(ELPP_SYSLOG) +static const char* kSysLogLoggerId = "syslog"; +#endif // defined(ELPP_SYSLOG) + +#if ELPP_OS_WINDOWS +static const char* kFilePathSeparator = "\\"; +#else +static const char* kFilePathSeparator = "/"; +#endif // ELPP_OS_WINDOWS + +static const std::size_t kSourceFilenameMaxLength = 100; +static const std::size_t kSourceLineMaxLength = 10; +static const Level kPerformanceTrackerDefaultLevel = Level::Info; +const struct { + double value; + const base::type::char_t* unit; +} kTimeFormats[] = { + { 1000.0f, ELPP_LITERAL("us") }, + { 1000.0f, ELPP_LITERAL("ms") }, + { 60.0f, ELPP_LITERAL("seconds") }, + { 60.0f, ELPP_LITERAL("minutes") }, + { 24.0f, ELPP_LITERAL("hours") }, + { 7.0f, ELPP_LITERAL("days") } +}; +static const int kTimeFormatsCount = sizeof(kTimeFormats) / sizeof(kTimeFormats[0]); +const struct { + int numb; + const char* name; + const char* brief; + const char* detail; +} kCrashSignals[] = { + // NOTE: Do not re-order, if you do please check CrashHandler(bool) constructor and CrashHandler::setHandler(..) + { + SIGABRT, "SIGABRT", "Abnormal termination", + "Program was abnormally terminated." + }, + { + SIGFPE, "SIGFPE", "Erroneous arithmetic operation", + "Arithmetic operation issue such as division by zero or operation resulting in overflow." + }, + { + SIGILL, "SIGILL", "Illegal instruction", + "Generally due to a corruption in the code or to an attempt to execute data." + }, + { + SIGSEGV, "SIGSEGV", "Invalid access to memory", + "Program is trying to read an invalid (unallocated, deleted or corrupted) or inaccessible memory." + }, + { + SIGINT, "SIGINT", "Interactive attention signal", + "Interruption generated (generally) by user or operating system." + }, +}; +static const int kCrashSignalsCount = sizeof(kCrashSignals) / sizeof(kCrashSignals[0]); +} // namespace consts +} // namespace base +typedef std::function PreRollOutCallback; +namespace base { +static inline void defaultPreRollOutCallback(const char*, std::size_t) {} +/// @brief Enum to represent timestamp unit +enum class TimestampUnit : base::type::EnumType { + Microsecond = 0, Millisecond = 1, Second = 2, Minute = 3, Hour = 4, Day = 5 +}; +/// @brief Format flags used to determine specifiers that are active for performance improvements. +enum class FormatFlags : base::type::EnumType { + DateTime = 1 << 1, + LoggerId = 1 << 2, + File = 1 << 3, + Line = 1 << 4, + Location = 1 << 5, + Function = 1 << 6, + User = 1 << 7, + Host = 1 << 8, + LogMessage = 1 << 9, + VerboseLevel = 1 << 10, + AppName = 1 << 11, + ThreadId = 1 << 12, + Level = 1 << 13, + FileBase = 1 << 14, + LevelShort = 1 << 15 +}; +/// @brief A subsecond precision class containing actual width and offset of the subsecond part +class SubsecondPrecision { + public: + SubsecondPrecision(void) { + init(base::consts::kDefaultSubsecondPrecision); + } + explicit SubsecondPrecision(int width) { + init(width); + } + bool operator==(const SubsecondPrecision& ssPrec) { + return m_width == ssPrec.m_width && m_offset == ssPrec.m_offset; + } + int m_width; + unsigned int m_offset; + private: + void init(int width); +}; +/// @brief Type alias of SubsecondPrecision +typedef SubsecondPrecision MillisecondsWidth; +/// @brief Namespace containing utility functions/static classes used internally +namespace utils { +/// @brief Deletes memory safely and points to null +template +static +typename std::enable_if::value, void>::type +safeDelete(T*& pointer) { + if (pointer == nullptr) + return; + delete pointer; + pointer = nullptr; +} +/// @brief Bitwise operations for C++11 strong enum class. This casts e into Flag_T and returns value after bitwise operation +/// Use these function as

flag = bitwise::Or(MyEnum::val1, flag);
+namespace bitwise { +template +static inline base::type::EnumType And(Enum e, base::type::EnumType flag) { + return static_cast(flag) & static_cast(e); +} +template +static inline base::type::EnumType Not(Enum e, base::type::EnumType flag) { + return static_cast(flag) & ~(static_cast(e)); +} +template +static inline base::type::EnumType Or(Enum e, base::type::EnumType flag) { + return static_cast(flag) | static_cast(e); +} +} // namespace bitwise +template +static inline void addFlag(Enum e, base::type::EnumType* flag) { + *flag = base::utils::bitwise::Or(e, *flag); +} +template +static inline void removeFlag(Enum e, base::type::EnumType* flag) { + *flag = base::utils::bitwise::Not(e, *flag); +} +template +static inline bool hasFlag(Enum e, base::type::EnumType flag) { + return base::utils::bitwise::And(e, flag) > 0x0; +} +} // namespace utils +namespace threading { +#if ELPP_THREADING_ENABLED +# if !ELPP_USE_STD_THREADING +namespace internal { +/// @brief A mutex wrapper for compiler that dont yet support std::recursive_mutex +class Mutex : base::NoCopy { + public: + Mutex(void) { +# if ELPP_OS_UNIX + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&m_underlyingMutex, &attr); + pthread_mutexattr_destroy(&attr); +# elif ELPP_OS_WINDOWS + InitializeCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + virtual ~Mutex(void) { +# if ELPP_OS_UNIX + pthread_mutex_destroy(&m_underlyingMutex); +# elif ELPP_OS_WINDOWS + DeleteCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + inline void lock(void) { +# if ELPP_OS_UNIX + pthread_mutex_lock(&m_underlyingMutex); +# elif ELPP_OS_WINDOWS + EnterCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + inline bool try_lock(void) { +# if ELPP_OS_UNIX + return (pthread_mutex_trylock(&m_underlyingMutex) == 0); +# elif ELPP_OS_WINDOWS + return TryEnterCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + inline void unlock(void) { +# if ELPP_OS_UNIX + pthread_mutex_unlock(&m_underlyingMutex); +# elif ELPP_OS_WINDOWS + LeaveCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + private: +# if ELPP_OS_UNIX + pthread_mutex_t m_underlyingMutex; +# elif ELPP_OS_WINDOWS + CRITICAL_SECTION m_underlyingMutex; +# endif // ELPP_OS_UNIX +}; +/// @brief Scoped lock for compiler that dont yet support std::lock_guard +template +class ScopedLock : base::NoCopy { + public: + explicit ScopedLock(M& mutex) { + m_mutex = &mutex; + m_mutex->lock(); + } + + virtual ~ScopedLock(void) { + m_mutex->unlock(); + } + private: + M* m_mutex; + ScopedLock(void); +}; +} // namespace internal +typedef base::threading::internal::Mutex Mutex; +typedef base::threading::internal::ScopedLock ScopedLock; +# else +typedef std::recursive_mutex Mutex; +typedef std::lock_guard ScopedLock; +# endif // !ELPP_USE_STD_THREADING +#else +namespace internal { +/// @brief Mutex wrapper used when multi-threading is disabled. +class NoMutex : base::NoCopy { + public: + NoMutex(void) {} + inline void lock(void) {} + inline bool try_lock(void) { + return true; + } + inline void unlock(void) {} +}; +/// @brief Lock guard wrapper used when multi-threading is disabled. +template +class NoScopedLock : base::NoCopy { + public: + explicit NoScopedLock(Mutex&) { + } + virtual ~NoScopedLock(void) { + } + private: + NoScopedLock(void); +}; +} // namespace internal +typedef base::threading::internal::NoMutex Mutex; +typedef base::threading::internal::NoScopedLock ScopedLock; +#endif // ELPP_THREADING_ENABLED +/// @brief Base of thread safe class, this class is inheritable-only +class ThreadSafe { + public: + virtual inline void acquireLock(void) ELPP_FINAL { m_mutex.lock(); } + virtual inline void releaseLock(void) ELPP_FINAL { m_mutex.unlock(); } + virtual inline base::threading::Mutex& lock(void) ELPP_FINAL { return m_mutex; } + protected: + ThreadSafe(void) {} + virtual ~ThreadSafe(void) {} + private: + base::threading::Mutex m_mutex; +}; + +#if ELPP_THREADING_ENABLED +# if !ELPP_USE_STD_THREADING +/// @brief Gets ID of currently running threading in windows systems. On unix, nothing is returned. +static std::string getCurrentThreadId(void) { + std::stringstream ss; +# if (ELPP_OS_WINDOWS) + ss << GetCurrentThreadId(); +# endif // (ELPP_OS_WINDOWS) + return ss.str(); +} +# else +/// @brief Gets ID of currently running threading using std::this_thread::get_id() +static std::string getCurrentThreadId(void) { + std::stringstream ss; + ss << std::this_thread::get_id(); + return ss.str(); +} +# endif // !ELPP_USE_STD_THREADING +#else +static inline std::string getCurrentThreadId(void) { + return std::string(); +} +#endif // ELPP_THREADING_ENABLED +} // namespace threading +namespace utils { +class File : base::StaticClass { + public: + /// @brief Creates new out file stream for specified filename. + /// @return Pointer to newly created fstream or nullptr + static base::type::fstream_t* newFileStream(const std::string& filename); + + /// @brief Gets size of file provided in stream + static std::size_t getSizeOfFile(base::type::fstream_t* fs); + + /// @brief Determines whether or not provided path exist in current file system + static bool pathExists(const char* path, bool considerFile = false); + + /// @brief Creates specified path on file system + /// @param path Path to create. + static bool createPath(const std::string& path); + /// @brief Extracts path of filename with leading slash + static std::string extractPathFromFilename(const std::string& fullPath, + const char* separator = base::consts::kFilePathSeparator); + /// @brief builds stripped filename and puts it in buff + static void buildStrippedFilename(const char* filename, char buff[], + std::size_t limit = base::consts::kSourceFilenameMaxLength); + /// @brief builds base filename and puts it in buff + static void buildBaseFilename(const std::string& fullPath, char buff[], + std::size_t limit = base::consts::kSourceFilenameMaxLength, + const char* separator = base::consts::kFilePathSeparator); +}; +/// @brief String utilities helper class used internally. You should not use it. +class Str : base::StaticClass { + public: + /// @brief Checks if character is digit. Dont use libc implementation of it to prevent locale issues. + static inline bool isDigit(char c) { + return c >= '0' && c <= '9'; + } + + /// @brief Matches wildcards, '*' and '?' only supported. + static bool wildCardMatch(const char* str, const char* pattern); + + static std::string& ltrim(std::string& str); + static std::string& rtrim(std::string& str); + static std::string& trim(std::string& str); + + /// @brief Determines whether or not str starts with specified string + /// @param str String to check + /// @param start String to check against + /// @return Returns true if starts with specified string, false otherwise + static bool startsWith(const std::string& str, const std::string& start); + + /// @brief Determines whether or not str ends with specified string + /// @param str String to check + /// @param end String to check against + /// @return Returns true if ends with specified string, false otherwise + static bool endsWith(const std::string& str, const std::string& end); + + /// @brief Replaces all instances of replaceWhat with 'replaceWith'. Original variable is changed for performance. + /// @param [in,out] str String to replace from + /// @param replaceWhat Character to replace + /// @param replaceWith Character to replace with + /// @return Modified version of str + static std::string& replaceAll(std::string& str, char replaceWhat, char replaceWith); + + /// @brief Replaces all instances of 'replaceWhat' with 'replaceWith'. (String version) Replaces in place + /// @param str String to replace from + /// @param replaceWhat Character to replace + /// @param replaceWith Character to replace with + /// @return Modified (original) str + static std::string& replaceAll(std::string& str, const std::string& replaceWhat, + const std::string& replaceWith); + + static void replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, + const base::type::string_t& replaceWith); +#if defined(ELPP_UNICODE) + static void replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, + const std::string& replaceWith); +#endif // defined(ELPP_UNICODE) + /// @brief Converts string to uppercase + /// @param str String to convert + /// @return Uppercase string + static std::string& toUpper(std::string& str); + + /// @brief Compares cstring equality - uses strcmp + static bool cStringEq(const char* s1, const char* s2); + + /// @brief Compares cstring equality (case-insensitive) - uses toupper(char) + /// Dont use strcasecmp because of CRT (VC++) + static bool cStringCaseEq(const char* s1, const char* s2); + + /// @brief Returns true if c exist in str + static bool contains(const char* str, char c); + + static char* convertAndAddToBuff(std::size_t n, int len, char* buf, const char* bufLim, bool zeroPadded = true); + static char* addToBuff(const char* str, char* buf, const char* bufLim); + static char* clearBuff(char buff[], std::size_t lim); + + /// @brief Converts wchar* to char* + /// NOTE: Need to free return value after use! + static char* wcharPtrToCharPtr(const wchar_t* line); +}; +/// @brief Operating System helper static class used internally. You should not use it. +class OS : base::StaticClass { + public: +#if ELPP_OS_WINDOWS + /// @brief Gets environment variables for Windows based OS. + /// We are not using getenv(const char*) because of CRT deprecation + /// @param varname Variable name to get environment variable value for + /// @return If variable exist the value of it otherwise nullptr + static const char* getWindowsEnvironmentVariable(const char* varname); +#endif // ELPP_OS_WINDOWS +#if ELPP_OS_ANDROID + /// @brief Reads android property value + static std::string getProperty(const char* prop); + + /// @brief Reads android device name + static std::string getDeviceName(void); +#endif // ELPP_OS_ANDROID + + /// @brief Runs command on terminal and returns the output. + /// + /// @detail This is applicable only on unix based systems, for all other OS, an empty string is returned. + /// @param command Bash command + /// @return Result of bash output or empty string if no result found. + static const std::string getBashOutput(const char* command); + + /// @brief Gets environment variable. This is cross-platform and CRT safe (for VC++) + /// @param variableName Environment variable name + /// @param defaultVal If no environment variable or value found the value to return by default + /// @param alternativeBashCommand If environment variable not found what would be alternative bash command + /// in order to look for value user is looking for. E.g, for 'user' alternative command will 'whoami' + static std::string getEnvironmentVariable(const char* variableName, const char* defaultVal, + const char* alternativeBashCommand = nullptr); + /// @brief Gets current username. + static std::string currentUser(void); + + /// @brief Gets current host name or computer name. + /// + /// @detail For android systems this is device name with its manufacturer and model separated by hyphen + static std::string currentHost(void); + /// @brief Whether or not terminal supports colors + static bool termSupportsColor(void); +}; +/// @brief Contains utilities for cross-platform date/time. This class make use of el::base::utils::Str +class DateTime : base::StaticClass { + public: + /// @brief Cross platform gettimeofday for Windows and unix platform. This can be used to determine current microsecond. + /// + /// @detail For unix system it uses gettimeofday(timeval*, timezone*) and for Windows, a separate implementation is provided + /// @param [in,out] tv Pointer that gets updated + static void gettimeofday(struct timeval* tv); + + /// @brief Gets current date and time with a subsecond part. + /// @param format User provided date/time format + /// @param ssPrec A pointer to base::SubsecondPrecision from configuration (non-null) + /// @returns string based date time in specified format. + static std::string getDateTime(const char* format, const base::SubsecondPrecision* ssPrec); + + /// @brief Converts timeval (struct from ctime) to string using specified format and subsecond precision + static std::string timevalToString(struct timeval tval, const char* format, + const el::base::SubsecondPrecision* ssPrec); + + /// @brief Formats time to get unit accordingly, units like second if > 1000 or minutes if > 60000 etc + static base::type::string_t formatTime(unsigned long long time, base::TimestampUnit timestampUnit); + + /// @brief Gets time difference in milli/micro second depending on timestampUnit + static unsigned long long getTimeDifference(const struct timeval& endTime, const struct timeval& startTime, + base::TimestampUnit timestampUnit); + + + static struct ::tm* buildTimeInfo(struct timeval* currTime, struct ::tm* timeInfo); + private: + static char* parseFormat(char* buf, std::size_t bufSz, const char* format, const struct tm* tInfo, + std::size_t msec, const base::SubsecondPrecision* ssPrec); +}; +/// @brief Command line arguments for application if specified using el::Helpers::setArgs(..) or START_EASYLOGGINGPP(..) +class CommandLineArgs { + public: + CommandLineArgs(void) { + setArgs(0, static_cast(nullptr)); + } + CommandLineArgs(int argc, const char** argv) { + setArgs(argc, argv); + } + CommandLineArgs(int argc, char** argv) { + setArgs(argc, argv); + } + virtual ~CommandLineArgs(void) {} + /// @brief Sets arguments and parses them + inline void setArgs(int argc, const char** argv) { + setArgs(argc, const_cast(argv)); + } + /// @brief Sets arguments and parses them + void setArgs(int argc, char** argv); + /// @brief Returns true if arguments contain paramKey with a value (separated by '=') + bool hasParamWithValue(const char* paramKey) const; + /// @brief Returns value of arguments + /// @see hasParamWithValue(const char*) + const char* getParamValue(const char* paramKey) const; + /// @brief Return true if arguments has a param (not having a value) i,e without '=' + bool hasParam(const char* paramKey) const; + /// @brief Returns true if no params available. This exclude argv[0] + bool empty(void) const; + /// @brief Returns total number of arguments. This exclude argv[0] + std::size_t size(void) const; + friend base::type::ostream_t& operator<<(base::type::ostream_t& os, const CommandLineArgs& c); + + private: + int m_argc; + char** m_argv; + std::unordered_map m_paramsWithValue; + std::vector m_params; +}; +/// @brief Abstract registry (aka repository) that provides basic interface for pointer repository specified by T_Ptr type. +/// +/// @detail Most of the functions are virtual final methods but anything implementing this abstract class should implement +/// unregisterAll() and deepCopy(const AbstractRegistry&) and write registerNew() method according to container +/// and few more methods; get() to find element, unregister() to unregister single entry. +/// Please note that this is thread-unsafe and should also implement thread-safety mechanisms in implementation. +template +class AbstractRegistry : public base::threading::ThreadSafe { + public: + typedef typename Container::iterator iterator; + typedef typename Container::const_iterator const_iterator; + + /// @brief Default constructor + AbstractRegistry(void) {} + + /// @brief Move constructor that is useful for base classes + AbstractRegistry(AbstractRegistry&& sr) { + if (this == &sr) { + return; + } + unregisterAll(); + m_list = std::move(sr.m_list); + } + + bool operator==(const AbstractRegistry& other) { + if (size() != other.size()) { + return false; + } + for (std::size_t i = 0; i < m_list.size(); ++i) { + if (m_list.at(i) != other.m_list.at(i)) { + return false; + } + } + return true; + } + + bool operator!=(const AbstractRegistry& other) { + if (size() != other.size()) { + return true; + } + for (std::size_t i = 0; i < m_list.size(); ++i) { + if (m_list.at(i) != other.m_list.at(i)) { + return true; + } + } + return false; + } + + /// @brief Assignment move operator + AbstractRegistry& operator=(AbstractRegistry&& sr) { + if (this == &sr) { + return *this; + } + unregisterAll(); + m_list = std::move(sr.m_list); + return *this; + } + + virtual ~AbstractRegistry(void) { + } + + /// @return Iterator pointer from start of repository + virtual inline iterator begin(void) ELPP_FINAL { + return m_list.begin(); + } + + /// @return Iterator pointer from end of repository + virtual inline iterator end(void) ELPP_FINAL { + return m_list.end(); + } + + + /// @return Constant iterator pointer from start of repository + virtual inline const_iterator cbegin(void) const ELPP_FINAL { + return m_list.cbegin(); + } + + /// @return End of repository + virtual inline const_iterator cend(void) const ELPP_FINAL { + return m_list.cend(); + } + + /// @return Whether or not repository is empty + virtual inline bool empty(void) const ELPP_FINAL { + return m_list.empty(); + } + + /// @return Size of repository + virtual inline std::size_t size(void) const ELPP_FINAL { + return m_list.size(); + } + + /// @brief Returns underlying container by reference + virtual inline Container& list(void) ELPP_FINAL { + return m_list; + } + + /// @brief Returns underlying container by constant reference. + virtual inline const Container& list(void) const ELPP_FINAL { + return m_list; + } + + /// @brief Unregisters all the pointers from current repository. + virtual void unregisterAll(void) = 0; + + protected: + virtual void deepCopy(const AbstractRegistry&) = 0; + void reinitDeepCopy(const AbstractRegistry& sr) { + unregisterAll(); + deepCopy(sr); + } + + private: + Container m_list; +}; + +/// @brief A pointer registry mechanism to manage memory and provide search functionalities. (non-predicate version) +/// +/// @detail NOTE: This is thread-unsafe implementation (although it contains lock function, it does not use these functions) +/// of AbstractRegistry. Any implementation of this class should be +/// explicitly (by using lock functions) +template +class Registry : public AbstractRegistry> { + public: + typedef typename Registry::iterator iterator; + typedef typename Registry::const_iterator const_iterator; + + Registry(void) {} + + /// @brief Copy constructor that is useful for base classes. Try to avoid this constructor, use move constructor. + Registry(const Registry& sr) : AbstractRegistry>() { + if (this == &sr) { + return; + } + this->reinitDeepCopy(sr); + } + + /// @brief Assignment operator that unregisters all the existing registries and deeply copies each of repo element + /// @see unregisterAll() + /// @see deepCopy(const AbstractRegistry&) + Registry& operator=(const Registry& sr) { + if (this == &sr) { + return *this; + } + this->reinitDeepCopy(sr); + return *this; + } + + virtual ~Registry(void) { + unregisterAll(); + } + + protected: + virtual void unregisterAll(void) ELPP_FINAL { + if (!this->empty()) { + for (auto&& curr : this->list()) { + base::utils::safeDelete(curr.second); + } + this->list().clear(); + } + } + +/// @brief Registers new registry to repository. + virtual void registerNew(const T_Key& uniqKey, T_Ptr* ptr) ELPP_FINAL { + unregister(uniqKey); + this->list().insert(std::make_pair(uniqKey, ptr)); + } + +/// @brief Unregisters single entry mapped to specified unique key + void unregister(const T_Key& uniqKey) { + T_Ptr* existing = get(uniqKey); + if (existing != nullptr) { + this->list().erase(uniqKey); + base::utils::safeDelete(existing); + } + } + +/// @brief Gets pointer from repository. If none found, nullptr is returned. + T_Ptr* get(const T_Key& uniqKey) { + iterator it = this->list().find(uniqKey); + return it == this->list().end() + ? nullptr + : it->second; + } + + private: + virtual void deepCopy(const AbstractRegistry>& sr) ELPP_FINAL { + for (const_iterator it = sr.cbegin(); it != sr.cend(); ++it) { + registerNew(it->first, new T_Ptr(*it->second)); + } + } +}; + +/// @brief A pointer registry mechanism to manage memory and provide search functionalities. (predicate version) +/// +/// @detail NOTE: This is thread-unsafe implementation of AbstractRegistry. Any implementation of this class +/// should be made thread-safe explicitly +template +class RegistryWithPred : public AbstractRegistry> { + public: + typedef typename RegistryWithPred::iterator iterator; + typedef typename RegistryWithPred::const_iterator const_iterator; + + RegistryWithPred(void) { + } + + virtual ~RegistryWithPred(void) { + unregisterAll(); + } + + /// @brief Copy constructor that is useful for base classes. Try to avoid this constructor, use move constructor. + RegistryWithPred(const RegistryWithPred& sr) : AbstractRegistry>() { + if (this == &sr) { + return; + } + this->reinitDeepCopy(sr); + } + + /// @brief Assignment operator that unregisters all the existing registries and deeply copies each of repo element + /// @see unregisterAll() + /// @see deepCopy(const AbstractRegistry&) + RegistryWithPred& operator=(const RegistryWithPred& sr) { + if (this == &sr) { + return *this; + } + this->reinitDeepCopy(sr); + return *this; + } + + friend base::type::ostream_t& operator<<(base::type::ostream_t& os, const RegistryWithPred& sr) { + for (const_iterator it = sr.list().begin(); it != sr.list().end(); ++it) { + os << ELPP_LITERAL(" ") << **it << ELPP_LITERAL("\n"); + } + return os; + } + + protected: + virtual void unregisterAll(void) ELPP_FINAL { + if (!this->empty()) { + for (auto&& curr : this->list()) { + base::utils::safeDelete(curr); + } + this->list().clear(); + } + } + + virtual void unregister(T_Ptr*& ptr) ELPP_FINAL { + if (ptr) { + iterator iter = this->begin(); + for (; iter != this->end(); ++iter) { + if (ptr == *iter) { + break; + } + } + if (iter != this->end() && *iter != nullptr) { + this->list().erase(iter); + base::utils::safeDelete(*iter); + } + } + } + + virtual inline void registerNew(T_Ptr* ptr) ELPP_FINAL { + this->list().push_back(ptr); + } + +/// @brief Gets pointer from repository with specified arguments. Arguments are passed to predicate +/// in order to validate pointer. + template + T_Ptr* get(const T& arg1, const T2 arg2) { + iterator iter = std::find_if(this->list().begin(), this->list().end(), Pred(arg1, arg2)); + if (iter != this->list().end() && *iter != nullptr) { + return *iter; + } + return nullptr; + } + + private: + virtual void deepCopy(const AbstractRegistry>& sr) { + for (const_iterator it = sr.list().begin(); it != sr.list().end(); ++it) { + registerNew(new T_Ptr(**it)); + } + } +}; +class Utils { + public: + template + static bool installCallback(const std::string& id, std::unordered_map* mapT) { + if (mapT->find(id) == mapT->end()) { + mapT->insert(std::make_pair(id, TPtr(new T()))); + return true; + } + return false; + } + + template + static void uninstallCallback(const std::string& id, std::unordered_map* mapT) { + if (mapT->find(id) != mapT->end()) { + mapT->erase(id); + } + } + + template + static T* callback(const std::string& id, std::unordered_map* mapT) { + typename std::unordered_map::iterator iter = mapT->find(id); + if (iter != mapT->end()) { + return static_cast(iter->second.get()); + } + return nullptr; + } +}; +} // namespace utils +} // namespace base +/// @brief Base of Easylogging++ friendly class +/// +/// @detail After inheriting this class publicly, implement pure-virtual function `void log(std::ostream&) const` +class Loggable { + public: + virtual ~Loggable(void) {} + virtual void log(el::base::type::ostream_t&) const = 0; + private: + friend inline el::base::type::ostream_t& operator<<(el::base::type::ostream_t& os, const Loggable& loggable) { + loggable.log(os); + return os; + } +}; +namespace base { +/// @brief Represents log format containing flags and date format. This is used internally to start initial log +class LogFormat : public Loggable { + public: + LogFormat(void); + LogFormat(Level level, const base::type::string_t& format); + LogFormat(const LogFormat& logFormat); + LogFormat(LogFormat&& logFormat); + LogFormat& operator=(const LogFormat& logFormat); + virtual ~LogFormat(void) {} + bool operator==(const LogFormat& other); + + /// @brief Updates format to be used while logging. + /// @param userFormat User provided format + void parseFromFormat(const base::type::string_t& userFormat); + + inline Level level(void) const { + return m_level; + } + + inline const base::type::string_t& userFormat(void) const { + return m_userFormat; + } + + inline const base::type::string_t& format(void) const { + return m_format; + } + + inline const std::string& dateTimeFormat(void) const { + return m_dateTimeFormat; + } + + inline base::type::EnumType flags(void) const { + return m_flags; + } + + inline bool hasFlag(base::FormatFlags flag) const { + return base::utils::hasFlag(flag, m_flags); + } + + virtual void log(el::base::type::ostream_t& os) const { + os << m_format; + } + + protected: + /// @brief Updates date time format if available in currFormat. + /// @param index Index where %datetime, %date or %time was found + /// @param [in,out] currFormat current format that is being used to format + virtual void updateDateFormat(std::size_t index, base::type::string_t& currFormat) ELPP_FINAL; + + /// @brief Updates %level from format. This is so that we dont have to do it at log-writing-time. It uses m_format and m_level + virtual void updateFormatSpec(void) ELPP_FINAL; + + inline void addFlag(base::FormatFlags flag) { + base::utils::addFlag(flag, &m_flags); + } + + private: + Level m_level; + base::type::string_t m_userFormat; + base::type::string_t m_format; + std::string m_dateTimeFormat; + base::type::EnumType m_flags; + std::string m_currentUser; + std::string m_currentHost; + friend class el::Logger; // To resolve loggerId format specifier easily +}; +} // namespace base +/// @brief Resolving function for format specifier +typedef std::function FormatSpecifierValueResolver; +/// @brief User-provided custom format specifier +/// @see el::Helpers::installCustomFormatSpecifier +/// @see FormatSpecifierValueResolver +class CustomFormatSpecifier { + public: + CustomFormatSpecifier(const char* formatSpecifier, const FormatSpecifierValueResolver& resolver) : + m_formatSpecifier(formatSpecifier), m_resolver(resolver) {} + inline const char* formatSpecifier(void) const { + return m_formatSpecifier; + } + inline const FormatSpecifierValueResolver& resolver(void) const { + return m_resolver; + } + inline bool operator==(const char* formatSpecifier) { + return strcmp(m_formatSpecifier, formatSpecifier) == 0; + } + + private: + const char* m_formatSpecifier; + FormatSpecifierValueResolver m_resolver; +}; +/// @brief Represents single configuration that has representing level, configuration type and a string based value. +/// +/// @detail String based value means any value either its boolean, integer or string itself, it will be embedded inside quotes +/// and will be parsed later. +/// +/// Consider some examples below: +/// * el::Configuration confEnabledInfo(el::Level::Info, el::ConfigurationType::Enabled, "true"); +/// * el::Configuration confMaxLogFileSizeInfo(el::Level::Info, el::ConfigurationType::MaxLogFileSize, "2048"); +/// * el::Configuration confFilenameInfo(el::Level::Info, el::ConfigurationType::Filename, "/var/log/my.log"); +class Configuration : public Loggable { + public: + Configuration(const Configuration& c); + Configuration& operator=(const Configuration& c); + + virtual ~Configuration(void) { + } + + /// @brief Full constructor used to sets value of configuration + Configuration(Level level, ConfigurationType configurationType, const std::string& value); + + /// @brief Gets level of current configuration + inline Level level(void) const { + return m_level; + } + + /// @brief Gets configuration type of current configuration + inline ConfigurationType configurationType(void) const { + return m_configurationType; + } + + /// @brief Gets string based configuration value + inline const std::string& value(void) const { + return m_value; + } + + /// @brief Set string based configuration value + /// @param value Value to set. Values have to be std::string; For boolean values use "true", "false", for any integral values + /// use them in quotes. They will be parsed when configuring + inline void setValue(const std::string& value) { + m_value = value; + } + + virtual void log(el::base::type::ostream_t& os) const; + + /// @brief Used to find configuration from configuration (pointers) repository. Avoid using it. + class Predicate { + public: + Predicate(Level level, ConfigurationType configurationType); + + bool operator()(const Configuration* conf) const; + + private: + Level m_level; + ConfigurationType m_configurationType; + }; + + private: + Level m_level; + ConfigurationType m_configurationType; + std::string m_value; +}; + +/// @brief Thread-safe Configuration repository +/// +/// @detail This repository represents configurations for all the levels and configuration type mapped to a value. +class Configurations : public base::utils::RegistryWithPred { + public: + /// @brief Default constructor with empty repository + Configurations(void); + + /// @brief Constructor used to set configurations using configuration file. + /// @param configurationFile Full path to configuration file + /// @param useDefaultsForRemaining Lets you set the remaining configurations to default. + /// @param base If provided, this configuration will be based off existing repository that this argument is pointing to. + /// @see parseFromFile(const std::string&, Configurations* base) + /// @see setRemainingToDefault() + Configurations(const std::string& configurationFile, bool useDefaultsForRemaining = true, + Configurations* base = nullptr); + + virtual ~Configurations(void) { + } + + /// @brief Parses configuration from file. + /// @param configurationFile Full path to configuration file + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration file. + /// @return True if successfully parsed, false otherwise. You may define 'ELPP_DEBUG_ASSERT_FAILURE' to make sure you + /// do not proceed without successful parse. + bool parseFromFile(const std::string& configurationFile, Configurations* base = nullptr); + + /// @brief Parse configurations from configuration string. + /// + /// @detail This configuration string has same syntax as configuration file contents. Make sure all the necessary + /// new line characters are provided. + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration text. + /// @return True if successfully parsed, false otherwise. You may define 'ELPP_DEBUG_ASSERT_FAILURE' to make sure you + /// do not proceed without successful parse. + bool parseFromText(const std::string& configurationsString, Configurations* base = nullptr); + + /// @brief Sets configuration based-off an existing configurations. + /// @param base Pointer to existing configurations. + void setFromBase(Configurations* base); + + /// @brief Determines whether or not specified configuration type exists in the repository. + /// + /// @detail Returns as soon as first level is found. + /// @param configurationType Type of configuration to check existence for. + bool hasConfiguration(ConfigurationType configurationType); + + /// @brief Determines whether or not specified configuration type exists for specified level + /// @param level Level to check + /// @param configurationType Type of configuration to check existence for. + bool hasConfiguration(Level level, ConfigurationType configurationType); + + /// @brief Sets value of configuration for specified level. + /// + /// @detail Any existing configuration for specified level will be replaced. Also note that configuration types + /// ConfigurationType::SubsecondPrecision and ConfigurationType::PerformanceTracking will be ignored if not set for + /// Level::Global because these configurations are not dependant on level. + /// @param level Level to set configuration for (el::Level). + /// @param configurationType Type of configuration (el::ConfigurationType) + /// @param value A string based value. Regardless of what the data type of configuration is, it will always be string + /// from users' point of view. This is then parsed later to be used internally. + /// @see Configuration::setValue(const std::string& value) + /// @see el::Level + /// @see el::ConfigurationType + void set(Level level, ConfigurationType configurationType, const std::string& value); + + /// @brief Sets single configuration based on other single configuration. + /// @see set(Level level, ConfigurationType configurationType, const std::string& value) + void set(Configuration* conf); + + inline Configuration* get(Level level, ConfigurationType configurationType) { + base::threading::ScopedLock scopedLock(lock()); + return RegistryWithPred::get(level, configurationType); + } + + /// @brief Sets configuration for all levels. + /// @param configurationType Type of configuration + /// @param value String based value + /// @see Configurations::set(Level level, ConfigurationType configurationType, const std::string& value) + inline void setGlobally(ConfigurationType configurationType, const std::string& value) { + setGlobally(configurationType, value, false); + } + + /// @brief Clears repository so that all the configurations are unset + inline void clear(void) { + base::threading::ScopedLock scopedLock(lock()); + unregisterAll(); + } + + /// @brief Gets configuration file used in parsing this configurations. + /// + /// @detail If this repository was set manually or by text this returns empty string. + inline const std::string& configurationFile(void) const { + return m_configurationFile; + } + + /// @brief Sets configurations to "factory based" configurations. + void setToDefault(void); + + /// @brief Lets you set the remaining configurations to default. + /// + /// @detail By remaining, it means that the level/type a configuration does not exist for. + /// This function is useful when you want to minimize chances of failures, e.g, if you have a configuration file that sets + /// configuration for all the configurations except for Enabled or not, we use this so that ENABLED is set to default i.e, + /// true. If you dont do this explicitly (either by calling this function or by using second param in Constructor + /// and try to access a value, an error is thrown + void setRemainingToDefault(void); + + /// @brief Parser used internally to parse configurations from file or text. + /// + /// @detail This class makes use of base::utils::Str. + /// You should not need this unless you are working on some tool for Easylogging++ + class Parser : base::StaticClass { + public: + /// @brief Parses configuration from file. + /// @param configurationFile Full path to configuration file + /// @param sender Sender configurations pointer. Usually 'this' is used from calling class + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration file. + /// @return True if successfully parsed, false otherwise. You may define '_STOP_ON_FIRSTELPP_ASSERTION' to make sure you + /// do not proceed without successful parse. + static bool parseFromFile(const std::string& configurationFile, Configurations* sender, + Configurations* base = nullptr); + + /// @brief Parse configurations from configuration string. + /// + /// @detail This configuration string has same syntax as configuration file contents. Make sure all the necessary + /// new line characters are provided. You may define '_STOP_ON_FIRSTELPP_ASSERTION' to make sure you + /// do not proceed without successful parse (This is recommended) + /// @param configurationsString the configuration in plain text format + /// @param sender Sender configurations pointer. Usually 'this' is used from calling class + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration text. + /// @return True if successfully parsed, false otherwise. + static bool parseFromText(const std::string& configurationsString, Configurations* sender, + Configurations* base = nullptr); + + private: + friend class el::Loggers; + static void ignoreComments(std::string* line); + static bool isLevel(const std::string& line); + static bool isComment(const std::string& line); + static inline bool isConfig(const std::string& line); + static bool parseLine(std::string* line, std::string* currConfigStr, std::string* currLevelStr, Level* currLevel, + Configurations* conf); + }; + + private: + std::string m_configurationFile; + bool m_isFromFile; + friend class el::Loggers; + + /// @brief Unsafely sets configuration if does not already exist + void unsafeSetIfNotExist(Level level, ConfigurationType configurationType, const std::string& value); + + /// @brief Thread unsafe set + void unsafeSet(Level level, ConfigurationType configurationType, const std::string& value); + + /// @brief Sets configurations for all levels including Level::Global if includeGlobalLevel is true + /// @see Configurations::setGlobally(ConfigurationType configurationType, const std::string& value) + void setGlobally(ConfigurationType configurationType, const std::string& value, bool includeGlobalLevel); + + /// @brief Sets configurations (Unsafely) for all levels including Level::Global if includeGlobalLevel is true + /// @see Configurations::setGlobally(ConfigurationType configurationType, const std::string& value) + void unsafeSetGlobally(ConfigurationType configurationType, const std::string& value, bool includeGlobalLevel); +}; + +namespace base { +typedef std::shared_ptr FileStreamPtr; +typedef std::unordered_map LogStreamsReferenceMap; +typedef std::shared_ptr LogStreamsReferenceMapPtr; +/// @brief Configurations with data types. +/// +/// @detail el::Configurations have string based values. This is whats used internally in order to read correct configurations. +/// This is to perform faster while writing logs using correct configurations. +/// +/// This is thread safe and final class containing non-virtual destructor (means nothing should inherit this class) +class TypedConfigurations : public base::threading::ThreadSafe { + public: + /// @brief Constructor to initialize (construct) the object off el::Configurations + /// @param configurations Configurations pointer/reference to base this typed configurations off. + /// @param logStreamsReference Use ELPP->registeredLoggers()->logStreamsReference() + TypedConfigurations(Configurations* configurations, LogStreamsReferenceMapPtr logStreamsReference); + + TypedConfigurations(const TypedConfigurations& other); + + virtual ~TypedConfigurations(void) { + } + + const Configurations* configurations(void) const { + return m_configurations; + } + + bool enabled(Level level); + bool toFile(Level level); + const std::string& filename(Level level); + bool toStandardOutput(Level level); + const base::LogFormat& logFormat(Level level); + const base::SubsecondPrecision& subsecondPrecision(Level level = Level::Global); + const base::MillisecondsWidth& millisecondsWidth(Level level = Level::Global); + bool performanceTracking(Level level = Level::Global); + base::type::fstream_t* fileStream(Level level); + std::size_t maxLogFileSize(Level level); + std::size_t logFlushThreshold(Level level); + + private: + Configurations* m_configurations; + std::unordered_map m_enabledMap; + std::unordered_map m_toFileMap; + std::unordered_map m_filenameMap; + std::unordered_map m_toStandardOutputMap; + std::unordered_map m_logFormatMap; + std::unordered_map m_subsecondPrecisionMap; + std::unordered_map m_performanceTrackingMap; + std::unordered_map m_fileStreamMap; + std::unordered_map m_maxLogFileSizeMap; + std::unordered_map m_logFlushThresholdMap; + LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; + + friend class el::Helpers; + friend class el::base::MessageBuilder; + friend class el::base::Writer; + friend class el::base::DefaultLogDispatchCallback; + friend class el::base::LogDispatcher; + + template + inline Conf_T getConfigByVal(Level level, const std::unordered_map* confMap, const char* confName) { + base::threading::ScopedLock scopedLock(lock()); + return unsafeGetConfigByVal(level, confMap, confName); // This is not unsafe anymore - mutex locked in scope + } + + template + inline Conf_T& getConfigByRef(Level level, std::unordered_map* confMap, const char* confName) { + base::threading::ScopedLock scopedLock(lock()); + return unsafeGetConfigByRef(level, confMap, confName); // This is not unsafe anymore - mutex locked in scope + } + + template + Conf_T unsafeGetConfigByVal(Level level, const std::unordered_map* confMap, const char* confName) { + ELPP_UNUSED(confName); + typename std::unordered_map::const_iterator it = confMap->find(level); + if (it == confMap->end()) { + try { + return confMap->at(Level::Global); + } catch (...) { + ELPP_INTERNAL_ERROR("Unable to get configuration [" << confName << "] for level [" + << LevelHelper::convertToString(level) << "]" + << std::endl << "Please ensure you have properly configured logger.", false); + return Conf_T(); + } + } + return it->second; + } + + template + Conf_T& unsafeGetConfigByRef(Level level, std::unordered_map* confMap, const char* confName) { + ELPP_UNUSED(confName); + typename std::unordered_map::iterator it = confMap->find(level); + if (it == confMap->end()) { + try { + return confMap->at(Level::Global); + } catch (...) { + ELPP_INTERNAL_ERROR("Unable to get configuration [" << confName << "] for level [" + << LevelHelper::convertToString(level) << "]" + << std::endl << "Please ensure you have properly configured logger.", false); + } + } + return it->second; + } + + template + void setValue(Level level, const Conf_T& value, std::unordered_map* confMap, + bool includeGlobalLevel = true) { + // If map is empty and we are allowed to add into generic level (Level::Global), do it! + if (confMap->empty() && includeGlobalLevel) { + confMap->insert(std::make_pair(Level::Global, value)); + return; + } + // If same value exist in generic level already, dont add it to explicit level + typename std::unordered_map::iterator it = confMap->find(Level::Global); + if (it != confMap->end() && it->second == value) { + return; + } + // Now make sure we dont double up values if we really need to add it to explicit level + it = confMap->find(level); + if (it == confMap->end()) { + // Value not found for level, add new + confMap->insert(std::make_pair(level, value)); + } else { + // Value found, just update value + confMap->at(level) = value; + } + } + + void build(Configurations* configurations); + unsigned long getULong(std::string confVal); + std::string resolveFilename(const std::string& filename); + void insertFile(Level level, const std::string& fullFilename); + bool unsafeValidateFileRolling(Level level, const PreRollOutCallback& preRollOutCallback); + + inline bool validateFileRolling(Level level, const PreRollOutCallback& preRollOutCallback) { + base::threading::ScopedLock scopedLock(lock()); + return unsafeValidateFileRolling(level, preRollOutCallback); + } +}; +/// @brief Class that keeps record of current line hit for occasional logging +class HitCounter { + public: + HitCounter(void) : + m_filename(""), + m_lineNumber(0), + m_hitCounts(0) { + } + + HitCounter(const char* filename, base::type::LineNumber lineNumber) : + m_filename(filename), + m_lineNumber(lineNumber), + m_hitCounts(0) { + } + + HitCounter(const HitCounter& hitCounter) : + m_filename(hitCounter.m_filename), + m_lineNumber(hitCounter.m_lineNumber), + m_hitCounts(hitCounter.m_hitCounts) { + } + + HitCounter& operator=(const HitCounter& hitCounter) { + if (&hitCounter != this) { + m_filename = hitCounter.m_filename; + m_lineNumber = hitCounter.m_lineNumber; + m_hitCounts = hitCounter.m_hitCounts; + } + return *this; + } + + virtual ~HitCounter(void) { + } + + /// @brief Resets location of current hit counter + inline void resetLocation(const char* filename, base::type::LineNumber lineNumber) { + m_filename = filename; + m_lineNumber = lineNumber; + } + + /// @brief Validates hit counts and resets it if necessary + inline void validateHitCounts(std::size_t n) { + if (m_hitCounts >= base::consts::kMaxLogPerCounter) { + m_hitCounts = (n >= 1 ? base::consts::kMaxLogPerCounter % n : 0); + } + ++m_hitCounts; + } + + inline const char* filename(void) const { + return m_filename; + } + + inline base::type::LineNumber lineNumber(void) const { + return m_lineNumber; + } + + inline std::size_t hitCounts(void) const { + return m_hitCounts; + } + + inline void increment(void) { + ++m_hitCounts; + } + + class Predicate { + public: + Predicate(const char* filename, base::type::LineNumber lineNumber) + : m_filename(filename), + m_lineNumber(lineNumber) { + } + inline bool operator()(const HitCounter* counter) { + return ((counter != nullptr) && + (strcmp(counter->m_filename, m_filename) == 0) && + (counter->m_lineNumber == m_lineNumber)); + } + + private: + const char* m_filename; + base::type::LineNumber m_lineNumber; + }; + + private: + const char* m_filename; + base::type::LineNumber m_lineNumber; + std::size_t m_hitCounts; +}; +/// @brief Repository for hit counters used across the application +class RegisteredHitCounters : public base::utils::RegistryWithPred { + public: + /// @brief Validates counter for every N, i.e, registers new if does not exist otherwise updates original one + /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned + bool validateEveryN(const char* filename, base::type::LineNumber lineNumber, std::size_t n); + + /// @brief Validates counter for hits >= N, i.e, registers new if does not exist otherwise updates original one + /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned + bool validateAfterN(const char* filename, base::type::LineNumber lineNumber, std::size_t n); + + /// @brief Validates counter for hits are <= n, i.e, registers new if does not exist otherwise updates original one + /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned + bool validateNTimes(const char* filename, base::type::LineNumber lineNumber, std::size_t n); + + /// @brief Gets hit counter registered at specified position + inline const base::HitCounter* getCounter(const char* filename, base::type::LineNumber lineNumber) { + base::threading::ScopedLock scopedLock(lock()); + return get(filename, lineNumber); + } +}; +/// @brief Action to be taken for dispatching +enum class DispatchAction : base::type::EnumType { + None = 1, NormalLog = 2, SysLog = 4 +}; +} // namespace base +template +class Callback : protected base::threading::ThreadSafe { + public: + Callback(void) : m_enabled(true) {} + inline bool enabled(void) const { + return m_enabled; + } + inline void setEnabled(bool enabled) { + base::threading::ScopedLock scopedLock(lock()); + m_enabled = enabled; + } + protected: + virtual void handle(const T* handlePtr) = 0; + private: + bool m_enabled; +}; +class LogDispatchData { + public: + LogDispatchData() : m_logMessage(nullptr), m_dispatchAction(base::DispatchAction::None) {} + inline const LogMessage* logMessage(void) const { + return m_logMessage; + } + inline base::DispatchAction dispatchAction(void) const { + return m_dispatchAction; + } + inline void setLogMessage(LogMessage* logMessage) { + m_logMessage = logMessage; + } + inline void setDispatchAction(base::DispatchAction dispatchAction) { + m_dispatchAction = dispatchAction; + } + private: + LogMessage* m_logMessage; + base::DispatchAction m_dispatchAction; + friend class base::LogDispatcher; + +}; +class LogDispatchCallback : public Callback { + protected: + virtual void handle(const LogDispatchData* data); + base::threading::Mutex& fileHandle(const LogDispatchData* data); + private: + friend class base::LogDispatcher; + std::unordered_map> m_fileLocks; + base::threading::Mutex m_fileLocksMapLock; +}; +class PerformanceTrackingCallback : public Callback { + private: + friend class base::PerformanceTracker; +}; +class LoggerRegistrationCallback : public Callback { + private: + friend class base::RegisteredLoggers; +}; +class LogBuilder : base::NoCopy { + public: + LogBuilder() : m_termSupportsColor(base::utils::OS::termSupportsColor()) {} + virtual ~LogBuilder(void) { + ELPP_INTERNAL_INFO(3, "Destroying log builder...") + } + virtual base::type::string_t build(const LogMessage* logMessage, bool appendNewLine) const = 0; + void convertToColoredOutput(base::type::string_t* logLine, Level level); + private: + bool m_termSupportsColor; + friend class el::base::DefaultLogDispatchCallback; +}; +typedef std::shared_ptr LogBuilderPtr; +/// @brief Represents a logger holding ID and configurations we need to write logs +/// +/// @detail This class does not write logs itself instead its used by writer to read configurations from. +class Logger : public base::threading::ThreadSafe, public Loggable { + public: + Logger(const std::string& id, base::LogStreamsReferenceMapPtr logStreamsReference); + Logger(const std::string& id, const Configurations& configurations, base::LogStreamsReferenceMapPtr logStreamsReference); + Logger(const Logger& logger); + Logger& operator=(const Logger& logger); + + virtual ~Logger(void) { + base::utils::safeDelete(m_typedConfigurations); + } + + virtual inline void log(el::base::type::ostream_t& os) const { + os << m_id.c_str(); + } + + /// @brief Configures the logger using specified configurations. + void configure(const Configurations& configurations); + + /// @brief Reconfigures logger using existing configurations + void reconfigure(void); + + inline const std::string& id(void) const { + return m_id; + } + + inline const std::string& parentApplicationName(void) const { + return m_parentApplicationName; + } + + inline void setParentApplicationName(const std::string& parentApplicationName) { + m_parentApplicationName = parentApplicationName; + } + + inline Configurations* configurations(void) { + return &m_configurations; + } + + inline base::TypedConfigurations* typedConfigurations(void) { + return m_typedConfigurations; + } + + static bool isValidId(const std::string& id); + + /// @brief Flushes logger to sync all log files for all levels + void flush(void); + + void flush(Level level, base::type::fstream_t* fs); + + inline bool isFlushNeeded(Level level) { + return ++m_unflushedCount.find(level)->second >= m_typedConfigurations->logFlushThreshold(level); + } + + inline LogBuilder* logBuilder(void) const { + return m_logBuilder.get(); + } + + inline void setLogBuilder(const LogBuilderPtr& logBuilder) { + m_logBuilder = logBuilder; + } + + inline bool enabled(Level level) const { + return m_typedConfigurations->enabled(level); + } + +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED +# define LOGGER_LEVEL_WRITERS_SIGNATURES(FUNCTION_NAME)\ +template \ +inline void FUNCTION_NAME(const char*, const T&, const Args&...);\ +template \ +inline void FUNCTION_NAME(const T&); + + template + inline void verbose(int, const char*, const T&, const Args&...); + + template + inline void verbose(int, const T&); + + LOGGER_LEVEL_WRITERS_SIGNATURES(info) + LOGGER_LEVEL_WRITERS_SIGNATURES(debug) + LOGGER_LEVEL_WRITERS_SIGNATURES(warn) + LOGGER_LEVEL_WRITERS_SIGNATURES(error) + LOGGER_LEVEL_WRITERS_SIGNATURES(fatal) + LOGGER_LEVEL_WRITERS_SIGNATURES(trace) +# undef LOGGER_LEVEL_WRITERS_SIGNATURES +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED + private: + std::string m_id; + base::TypedConfigurations* m_typedConfigurations; + base::type::stringstream_t m_stream; + std::string m_parentApplicationName; + bool m_isConfigured; + Configurations m_configurations; + std::unordered_map m_unflushedCount; + base::LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; + LogBuilderPtr m_logBuilder; + + friend class el::LogMessage; + friend class el::Loggers; + friend class el::Helpers; + friend class el::base::RegisteredLoggers; + friend class el::base::DefaultLogDispatchCallback; + friend class el::base::MessageBuilder; + friend class el::base::Writer; + friend class el::base::PErrorWriter; + friend class el::base::Storage; + friend class el::base::PerformanceTracker; + friend class el::base::LogDispatcher; + + Logger(void); + +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED + template + void log_(Level, int, const char*, const T&, const Args&...); + + template + inline void log_(Level, int, const T&); + + template + void log(Level, const char*, const T&, const Args&...); + + template + inline void log(Level, const T&); +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED + + void initUnflushedCount(void); + + inline base::type::stringstream_t& stream(void) { + return m_stream; + } + + void resolveLoggerFormatSpec(void) const; +}; +namespace base { +/// @brief Loggers repository +class RegisteredLoggers : public base::utils::Registry { + public: + explicit RegisteredLoggers(const LogBuilderPtr& defaultLogBuilder); + + virtual ~RegisteredLoggers(void) { + unsafeFlushAll(); + } + + inline void setDefaultConfigurations(const Configurations& configurations) { + base::threading::ScopedLock scopedLock(lock()); + m_defaultConfigurations.setFromBase(const_cast(&configurations)); + } + + inline Configurations* defaultConfigurations(void) { + return &m_defaultConfigurations; + } + + Logger* get(const std::string& id, bool forceCreation = true); + + template + inline bool installLoggerRegistrationCallback(const std::string& id) { + return base::utils::Utils::installCallback(id, + &m_loggerRegistrationCallbacks); + } + + template + inline void uninstallLoggerRegistrationCallback(const std::string& id) { + base::utils::Utils::uninstallCallback(id, &m_loggerRegistrationCallbacks); + } + + template + inline T* loggerRegistrationCallback(const std::string& id) { + return base::utils::Utils::callback(id, &m_loggerRegistrationCallbacks); + } + + bool remove(const std::string& id); + + inline bool has(const std::string& id) { + return get(id, false) != nullptr; + } + + inline void unregister(Logger*& logger) { + base::threading::ScopedLock scopedLock(lock()); + base::utils::Registry::unregister(logger->id()); + } + + inline LogStreamsReferenceMapPtr logStreamsReference(void) { + return m_logStreamsReference; + } + + inline void flushAll(void) { + base::threading::ScopedLock scopedLock(lock()); + unsafeFlushAll(); + } + + inline void setDefaultLogBuilder(LogBuilderPtr& logBuilderPtr) { + base::threading::ScopedLock scopedLock(lock()); + m_defaultLogBuilder = logBuilderPtr; + } + + private: + LogBuilderPtr m_defaultLogBuilder; + Configurations m_defaultConfigurations; + base::LogStreamsReferenceMapPtr m_logStreamsReference = nullptr; + std::unordered_map m_loggerRegistrationCallbacks; + friend class el::base::Storage; + + void unsafeFlushAll(void); +}; +/// @brief Represents registries for verbose logging +class VRegistry : base::NoCopy, public base::threading::ThreadSafe { + public: + explicit VRegistry(base::type::VerboseLevel level, base::type::EnumType* pFlags); + + /// @brief Sets verbose level. Accepted range is 0-9 + void setLevel(base::type::VerboseLevel level); + + inline base::type::VerboseLevel level(void) const { + return m_level; + } + + inline void clearModules(void) { + base::threading::ScopedLock scopedLock(lock()); + m_modules.clear(); + } + + void setModules(const char* modules); + + bool allowed(base::type::VerboseLevel vlevel, const char* file); + + inline const std::unordered_map& modules(void) const { + return m_modules; + } + + void setFromArgs(const base::utils::CommandLineArgs* commandLineArgs); + + /// @brief Whether or not vModules enabled + inline bool vModulesEnabled(void) { + return !base::utils::hasFlag(LoggingFlag::DisableVModules, *m_pFlags); + } + + private: + base::type::VerboseLevel m_level; + base::type::EnumType* m_pFlags; + std::unordered_map m_modules; +}; +} // namespace base +class LogMessage { + public: + LogMessage(Level level, const std::string& file, base::type::LineNumber line, const std::string& func, + base::type::VerboseLevel verboseLevel, Logger* logger) : + m_level(level), m_file(file), m_line(line), m_func(func), + m_verboseLevel(verboseLevel), m_logger(logger), m_message(logger->stream().str()) { + } + inline Level level(void) const { + return m_level; + } + inline const std::string& file(void) const { + return m_file; + } + inline base::type::LineNumber line(void) const { + return m_line; + } + inline const std::string& func(void) const { + return m_func; + } + inline base::type::VerboseLevel verboseLevel(void) const { + return m_verboseLevel; + } + inline Logger* logger(void) const { + return m_logger; + } + inline const base::type::string_t& message(void) const { + return m_message; + } + private: + Level m_level; + std::string m_file; + base::type::LineNumber m_line; + std::string m_func; + base::type::VerboseLevel m_verboseLevel; + Logger* m_logger; + base::type::string_t m_message; +}; +namespace base { +#if ELPP_ASYNC_LOGGING +class AsyncLogItem { + public: + explicit AsyncLogItem(const LogMessage& logMessage, const LogDispatchData& data, const base::type::string_t& logLine) + : m_logMessage(logMessage), m_dispatchData(data), m_logLine(logLine) {} + virtual ~AsyncLogItem() {} + inline LogMessage* logMessage(void) { + return &m_logMessage; + } + inline LogDispatchData* data(void) { + return &m_dispatchData; + } + inline base::type::string_t logLine(void) { + return m_logLine; + } + private: + LogMessage m_logMessage; + LogDispatchData m_dispatchData; + base::type::string_t m_logLine; +}; +class AsyncLogQueue : public base::threading::ThreadSafe { + public: + virtual ~AsyncLogQueue() { + ELPP_INTERNAL_INFO(6, "~AsyncLogQueue"); + } + + inline AsyncLogItem next(void) { + base::threading::ScopedLock scopedLock(lock()); + AsyncLogItem result = m_queue.front(); + m_queue.pop(); + return result; + } + + inline void push(const AsyncLogItem& item) { + base::threading::ScopedLock scopedLock(lock()); + m_queue.push(item); + } + inline void pop(void) { + base::threading::ScopedLock scopedLock(lock()); + m_queue.pop(); + } + inline AsyncLogItem front(void) { + base::threading::ScopedLock scopedLock(lock()); + return m_queue.front(); + } + inline bool empty(void) { + base::threading::ScopedLock scopedLock(lock()); + return m_queue.empty(); + } + private: + std::queue m_queue; +}; +class IWorker { + public: + virtual ~IWorker() {} + virtual void start() = 0; +}; +#endif // ELPP_ASYNC_LOGGING +/// @brief Easylogging++ management storage +class Storage : base::NoCopy, public base::threading::ThreadSafe { + public: +#if ELPP_ASYNC_LOGGING + Storage(const LogBuilderPtr& defaultLogBuilder, base::IWorker* asyncDispatchWorker); +#else + explicit Storage(const LogBuilderPtr& defaultLogBuilder); +#endif // ELPP_ASYNC_LOGGING + + virtual ~Storage(void); + + inline bool validateEveryNCounter(const char* filename, base::type::LineNumber lineNumber, std::size_t occasion) { + return hitCounters()->validateEveryN(filename, lineNumber, occasion); + } + + inline bool validateAfterNCounter(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { + return hitCounters()->validateAfterN(filename, lineNumber, n); + } + + inline bool validateNTimesCounter(const char* filename, base::type::LineNumber lineNumber, std::size_t n) { + return hitCounters()->validateNTimes(filename, lineNumber, n); + } + + inline base::RegisteredHitCounters* hitCounters(void) const { + return m_registeredHitCounters; + } + + inline base::RegisteredLoggers* registeredLoggers(void) const { + return m_registeredLoggers; + } + + inline base::VRegistry* vRegistry(void) const { + return m_vRegistry; + } + +#if ELPP_ASYNC_LOGGING + inline base::AsyncLogQueue* asyncLogQueue(void) const { + return m_asyncLogQueue; + } +#endif // ELPP_ASYNC_LOGGING + + inline const base::utils::CommandLineArgs* commandLineArgs(void) const { + return &m_commandLineArgs; + } + + inline void addFlag(LoggingFlag flag) { + base::utils::addFlag(flag, &m_flags); + } + + inline void removeFlag(LoggingFlag flag) { + base::utils::removeFlag(flag, &m_flags); + } + + inline bool hasFlag(LoggingFlag flag) const { + return base::utils::hasFlag(flag, m_flags); + } + + inline base::type::EnumType flags(void) const { + return m_flags; + } + + inline void setFlags(base::type::EnumType flags) { + m_flags = flags; + } + + inline void setPreRollOutCallback(const PreRollOutCallback& callback) { + m_preRollOutCallback = callback; + } + + inline void unsetPreRollOutCallback(void) { + m_preRollOutCallback = base::defaultPreRollOutCallback; + } + + inline PreRollOutCallback& preRollOutCallback(void) { + return m_preRollOutCallback; + } + + bool hasCustomFormatSpecifier(const char* formatSpecifier); + void installCustomFormatSpecifier(const CustomFormatSpecifier& customFormatSpecifier); + bool uninstallCustomFormatSpecifier(const char* formatSpecifier); + + const std::vector* customFormatSpecifiers(void) const { + return &m_customFormatSpecifiers; + } + + base::threading::Mutex& customFormatSpecifiersLock() { + return m_customFormatSpecifiersLock; + } + + inline void setLoggingLevel(Level level) { + m_loggingLevel = level; + } + + template + inline bool installLogDispatchCallback(const std::string& id) { + return base::utils::Utils::installCallback(id, &m_logDispatchCallbacks); + } + + template + inline void uninstallLogDispatchCallback(const std::string& id) { + base::utils::Utils::uninstallCallback(id, &m_logDispatchCallbacks); + } + template + inline T* logDispatchCallback(const std::string& id) { + return base::utils::Utils::callback(id, &m_logDispatchCallbacks); + } + +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + template + inline bool installPerformanceTrackingCallback(const std::string& id) { + return base::utils::Utils::installCallback(id, + &m_performanceTrackingCallbacks); + } + + template + inline void uninstallPerformanceTrackingCallback(const std::string& id) { + base::utils::Utils::uninstallCallback(id, + &m_performanceTrackingCallbacks); + } + + template + inline T* performanceTrackingCallback(const std::string& id) { + return base::utils::Utils::callback(id, &m_performanceTrackingCallbacks); + } +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + + /// @brief Sets thread name for current thread. Requires std::thread + inline void setThreadName(const std::string& name) { + if (name.empty()) return; + base::threading::ScopedLock scopedLock(m_threadNamesLock); + m_threadNames[base::threading::getCurrentThreadId()] = name; + } + + inline std::string getThreadName(const std::string& threadId) { + base::threading::ScopedLock scopedLock(m_threadNamesLock); + std::unordered_map::const_iterator it = m_threadNames.find(threadId); + if (it == m_threadNames.end()) { + return threadId; + } + return it->second; + } + private: + base::RegisteredHitCounters* m_registeredHitCounters; + base::RegisteredLoggers* m_registeredLoggers; + base::type::EnumType m_flags; + base::VRegistry* m_vRegistry; +#if ELPP_ASYNC_LOGGING + base::AsyncLogQueue* m_asyncLogQueue; + base::IWorker* m_asyncDispatchWorker; +#endif // ELPP_ASYNC_LOGGING + base::utils::CommandLineArgs m_commandLineArgs; + PreRollOutCallback m_preRollOutCallback; + std::unordered_map m_logDispatchCallbacks; + std::unordered_map m_performanceTrackingCallbacks; + std::unordered_map m_threadNames; + std::vector m_customFormatSpecifiers; + base::threading::Mutex m_customFormatSpecifiersLock; + base::threading::Mutex m_threadNamesLock; + Level m_loggingLevel; + + friend class el::Helpers; + friend class el::base::DefaultLogDispatchCallback; + friend class el::LogBuilder; + friend class el::base::MessageBuilder; + friend class el::base::Writer; + friend class el::base::PerformanceTracker; + friend class el::base::LogDispatcher; + + void setApplicationArguments(int argc, char** argv); + + inline void setApplicationArguments(int argc, const char** argv) { + setApplicationArguments(argc, const_cast(argv)); + } +}; +extern ELPP_EXPORT base::type::StoragePointer elStorage; +#define ELPP el::base::elStorage +class DefaultLogDispatchCallback : public LogDispatchCallback { + protected: + void handle(const LogDispatchData* data); + private: + const LogDispatchData* m_data; + void dispatch(base::type::string_t&& logLine); +}; +#if ELPP_ASYNC_LOGGING +class AsyncLogDispatchCallback : public LogDispatchCallback { + protected: + void handle(const LogDispatchData* data); +}; +class AsyncDispatchWorker : public base::IWorker, public base::threading::ThreadSafe { + public: + AsyncDispatchWorker(); + virtual ~AsyncDispatchWorker(); + + bool clean(void); + void emptyQueue(void); + virtual void start(void); + void handle(AsyncLogItem* logItem); + void run(void); + + void setContinueRunning(bool value) { + base::threading::ScopedLock scopedLock(m_continueRunningLock); + m_continueRunning = value; + } + + bool continueRunning(void) const { + return m_continueRunning; + } + private: + std::condition_variable cv; + bool m_continueRunning; + base::threading::Mutex m_continueRunningLock; +}; +#endif // ELPP_ASYNC_LOGGING +} // namespace base +namespace base { +class DefaultLogBuilder : public LogBuilder { + public: + base::type::string_t build(const LogMessage* logMessage, bool appendNewLine) const; +}; +/// @brief Dispatches log messages +class LogDispatcher : base::NoCopy { + public: + LogDispatcher(bool proceed, LogMessage* logMessage, base::DispatchAction dispatchAction) : + m_proceed(proceed), + m_logMessage(logMessage), + m_dispatchAction(std::move(dispatchAction)) { + } + + void dispatch(void); + + private: + bool m_proceed; + LogMessage* m_logMessage; + base::DispatchAction m_dispatchAction; +}; +#if defined(ELPP_STL_LOGGING) +/// @brief Workarounds to write some STL logs +/// +/// @detail There is workaround needed to loop through some stl containers. In order to do that, we need iterable containers +/// of same type and provide iterator interface and pass it on to writeIterator(). +/// Remember, this is passed by value in constructor so that we dont change original containers. +/// This operation is as expensive as Big-O(std::min(class_.size(), base::consts::kMaxLogPerContainer)) +namespace workarounds { +/// @brief Abstract IterableContainer template that provides interface for iterable classes of type T +template +class IterableContainer { + public: + typedef typename Container::iterator iterator; + typedef typename Container::const_iterator const_iterator; + IterableContainer(void) {} + virtual ~IterableContainer(void) {} + iterator begin(void) { + return getContainer().begin(); + } + iterator end(void) { + return getContainer().end(); + } + private: + virtual Container& getContainer(void) = 0; +}; +/// @brief Implements IterableContainer and provides iterable std::priority_queue class +template, typename Comparator = std::less> +class IterablePriorityQueue : public IterableContainer, + public std::priority_queue { + public: + IterablePriorityQueue(std::priority_queue queue_) { + std::size_t count_ = 0; + while (++count_ < base::consts::kMaxLogPerContainer && !queue_.empty()) { + this->push(queue_.top()); + queue_.pop(); + } + } + private: + inline Container& getContainer(void) { + return this->c; + } +}; +/// @brief Implements IterableContainer and provides iterable std::queue class +template> +class IterableQueue : public IterableContainer, public std::queue { + public: + IterableQueue(std::queue queue_) { + std::size_t count_ = 0; + while (++count_ < base::consts::kMaxLogPerContainer && !queue_.empty()) { + this->push(queue_.front()); + queue_.pop(); + } + } + private: + inline Container& getContainer(void) { + return this->c; + } +}; +/// @brief Implements IterableContainer and provides iterable std::stack class +template> +class IterableStack : public IterableContainer, public std::stack { + public: + IterableStack(std::stack stack_) { + std::size_t count_ = 0; + while (++count_ < base::consts::kMaxLogPerContainer && !stack_.empty()) { + this->push(stack_.top()); + stack_.pop(); + } + } + private: + inline Container& getContainer(void) { + return this->c; + } +}; +} // namespace workarounds +#endif // defined(ELPP_STL_LOGGING) +// Log message builder +class MessageBuilder { + public: + MessageBuilder(void) : m_logger(nullptr), m_containerLogSeparator(ELPP_LITERAL("")) {} + void initialize(Logger* logger); + +# define ELPP_SIMPLE_LOG(LOG_TYPE)\ +MessageBuilder& operator<<(LOG_TYPE msg) {\ +m_logger->stream() << msg;\ +if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) {\ +m_logger->stream() << " ";\ +}\ +return *this;\ +} + + inline MessageBuilder& operator<<(const std::string& msg) { + return operator<<(msg.c_str()); + } + ELPP_SIMPLE_LOG(char) + ELPP_SIMPLE_LOG(bool) + ELPP_SIMPLE_LOG(signed short) + ELPP_SIMPLE_LOG(unsigned short) + ELPP_SIMPLE_LOG(signed int) + ELPP_SIMPLE_LOG(unsigned int) + ELPP_SIMPLE_LOG(signed long) + ELPP_SIMPLE_LOG(unsigned long) + ELPP_SIMPLE_LOG(float) + ELPP_SIMPLE_LOG(double) + ELPP_SIMPLE_LOG(char*) + ELPP_SIMPLE_LOG(const char*) + ELPP_SIMPLE_LOG(const void*) + ELPP_SIMPLE_LOG(long double) + inline MessageBuilder& operator<<(const std::wstring& msg) { + return operator<<(msg.c_str()); + } + MessageBuilder& operator<<(const wchar_t* msg); + // ostream manipulators + inline MessageBuilder& operator<<(std::ostream& (*OStreamMani)(std::ostream&)) { + m_logger->stream() << OStreamMani; + return *this; + } +#define ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(temp) \ +template \ +inline MessageBuilder& operator<<(const temp& template_inst) { \ +return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ +} +#define ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(temp) \ +template \ +inline MessageBuilder& operator<<(const temp& template_inst) { \ +return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ +} +#define ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(temp) \ +template \ +inline MessageBuilder& operator<<(const temp& template_inst) { \ +return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ +} +#define ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(temp) \ +template \ +inline MessageBuilder& operator<<(const temp& template_inst) { \ +return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ +} +#define ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(temp) \ +template \ +inline MessageBuilder& operator<<(const temp& template_inst) { \ +return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ +} + +#if defined(ELPP_STL_LOGGING) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::vector) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::list) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::deque) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(std::set) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(std::multiset) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::map) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::multimap) + template + inline MessageBuilder& operator<<(const std::queue& queue_) { + base::workarounds::IterableQueue iterableQueue_ = + static_cast >(queue_); + return writeIterator(iterableQueue_.begin(), iterableQueue_.end(), iterableQueue_.size()); + } + template + inline MessageBuilder& operator<<(const std::stack& stack_) { + base::workarounds::IterableStack iterableStack_ = + static_cast >(stack_); + return writeIterator(iterableStack_.begin(), iterableStack_.end(), iterableStack_.size()); + } + template + inline MessageBuilder& operator<<(const std::priority_queue& priorityQueue_) { + base::workarounds::IterablePriorityQueue iterablePriorityQueue_ = + static_cast >(priorityQueue_); + return writeIterator(iterablePriorityQueue_.begin(), iterablePriorityQueue_.end(), iterablePriorityQueue_.size()); + } + template + MessageBuilder& operator<<(const std::pair& pair_) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(pair_.first)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(pair_.second)); + m_logger->stream() << ELPP_LITERAL(")"); + return *this; + } + template + MessageBuilder& operator<<(const std::bitset& bitset_) { + m_logger->stream() << ELPP_LITERAL("["); + operator << (bitset_.to_string()); + m_logger->stream() << ELPP_LITERAL("]"); + return *this; + } +# if defined(ELPP_LOG_STD_ARRAY) + template + inline MessageBuilder& operator<<(const std::array& array) { + return writeIterator(array.begin(), array.end(), array.size()); + } +# endif // defined(ELPP_LOG_STD_ARRAY) +# if defined(ELPP_LOG_UNORDERED_MAP) + ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(std::unordered_map) + ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(std::unordered_multimap) +# endif // defined(ELPP_LOG_UNORDERED_MAP) +# if defined(ELPP_LOG_UNORDERED_SET) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::unordered_set) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::unordered_multiset) +# endif // defined(ELPP_LOG_UNORDERED_SET) +#endif // defined(ELPP_STL_LOGGING) +#if defined(ELPP_QT_LOGGING) + inline MessageBuilder& operator<<(const QString& msg) { +# if defined(ELPP_UNICODE) + m_logger->stream() << msg.toStdWString(); +# else + m_logger->stream() << msg.toStdString(); +# endif // defined(ELPP_UNICODE) + return *this; + } + inline MessageBuilder& operator<<(const QByteArray& msg) { + return operator << (QString(msg)); + } + inline MessageBuilder& operator<<(const QStringRef& msg) { + return operator<<(msg.toString()); + } + inline MessageBuilder& operator<<(qint64 msg) { +# if defined(ELPP_UNICODE) + m_logger->stream() << QString::number(msg).toStdWString(); +# else + m_logger->stream() << QString::number(msg).toStdString(); +# endif // defined(ELPP_UNICODE) + return *this; + } + inline MessageBuilder& operator<<(quint64 msg) { +# if defined(ELPP_UNICODE) + m_logger->stream() << QString::number(msg).toStdWString(); +# else + m_logger->stream() << QString::number(msg).toStdString(); +# endif // defined(ELPP_UNICODE) + return *this; + } + inline MessageBuilder& operator<<(QChar msg) { + m_logger->stream() << msg.toLatin1(); + return *this; + } + inline MessageBuilder& operator<<(const QLatin1String& msg) { + m_logger->stream() << msg.latin1(); + return *this; + } + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QList) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QVector) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QQueue) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QSet) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QLinkedList) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QStack) + template + MessageBuilder& operator<<(const QPair& pair_) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(pair_.first)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(pair_.second)); + m_logger->stream() << ELPP_LITERAL(")"); + return *this; + } + template + MessageBuilder& operator<<(const QMap& map_) { + m_logger->stream() << ELPP_LITERAL("["); + QList keys = map_.keys(); + typename QList::const_iterator begin = keys.begin(); + typename QList::const_iterator end = keys.end(); + int max_ = static_cast(base::consts::kMaxLogPerContainer); // to prevent warning + for (int index_ = 0; begin != end && index_ < max_; ++index_, ++begin) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(*begin)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(map_.value(*begin))); + m_logger->stream() << ELPP_LITERAL(")"); + m_logger->stream() << ((index_ < keys.size() -1) ? m_containerLogSeparator : ELPP_LITERAL("")); + } + if (begin != end) { + m_logger->stream() << ELPP_LITERAL("..."); + } + m_logger->stream() << ELPP_LITERAL("]"); + return *this; + } + template + inline MessageBuilder& operator<<(const QMultiMap& map_) { + operator << (static_cast>(map_)); + return *this; + } + template + MessageBuilder& operator<<(const QHash& hash_) { + m_logger->stream() << ELPP_LITERAL("["); + QList keys = hash_.keys(); + typename QList::const_iterator begin = keys.begin(); + typename QList::const_iterator end = keys.end(); + int max_ = static_cast(base::consts::kMaxLogPerContainer); // prevent type warning + for (int index_ = 0; begin != end && index_ < max_; ++index_, ++begin) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(*begin)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(hash_.value(*begin))); + m_logger->stream() << ELPP_LITERAL(")"); + m_logger->stream() << ((index_ < keys.size() -1) ? m_containerLogSeparator : ELPP_LITERAL("")); + } + if (begin != end) { + m_logger->stream() << ELPP_LITERAL("..."); + } + m_logger->stream() << ELPP_LITERAL("]"); + return *this; + } + template + inline MessageBuilder& operator<<(const QMultiHash& multiHash_) { + operator << (static_cast>(multiHash_)); + return *this; + } +#endif // defined(ELPP_QT_LOGGING) +#if defined(ELPP_BOOST_LOGGING) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::vector) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::stable_vector) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::list) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::deque) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(boost::container::map) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(boost::container::flat_map) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(boost::container::set) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(boost::container::flat_set) +#endif // defined(ELPP_BOOST_LOGGING) + + /// @brief Macro used internally that can be used externally to make containers easylogging++ friendly + /// + /// @detail This macro expands to write an ostream& operator<< for container. This container is expected to + /// have begin() and end() methods that return respective iterators + /// @param ContainerType Type of container e.g, MyList from WX_DECLARE_LIST(int, MyList); in wxwidgets + /// @param SizeMethod Method used to get size of container. + /// @param ElementInstance Instance of element to be fed out. Instance name is "elem". See WXELPP_ENABLED macro + /// for an example usage +#define MAKE_CONTAINERELPP_FRIENDLY(ContainerType, SizeMethod, ElementInstance) \ +el::base::type::ostream_t& operator<<(el::base::type::ostream_t& ss, const ContainerType& container) {\ +const el::base::type::char_t* sep = ELPP->hasFlag(el::LoggingFlag::NewLineForContainer) ? \ +ELPP_LITERAL("\n ") : ELPP_LITERAL(", ");\ +ContainerType::const_iterator elem = container.begin();\ +ContainerType::const_iterator endElem = container.end();\ +std::size_t size_ = container.SizeMethod; \ +ss << ELPP_LITERAL("[");\ +for (std::size_t i = 0; elem != endElem && i < el::base::consts::kMaxLogPerContainer; ++i, ++elem) { \ +ss << ElementInstance;\ +ss << ((i < size_ - 1) ? sep : ELPP_LITERAL(""));\ +}\ +if (elem != endElem) {\ +ss << ELPP_LITERAL("...");\ +}\ +ss << ELPP_LITERAL("]");\ +return ss;\ +} +#if defined(ELPP_WXWIDGETS_LOGGING) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(wxVector) +# define ELPP_WX_PTR_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), *(*elem)) +# define ELPP_WX_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), (*elem)) +# define ELPP_WX_HASH_MAP_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), \ +ELPP_LITERAL("(") << elem->first << ELPP_LITERAL(", ") << elem->second << ELPP_LITERAL(")") +#else +# define ELPP_WX_PTR_ENABLED(ContainerType) +# define ELPP_WX_ENABLED(ContainerType) +# define ELPP_WX_HASH_MAP_ENABLED(ContainerType) +#endif // defined(ELPP_WXWIDGETS_LOGGING) + // Other classes + template + ELPP_SIMPLE_LOG(const Class&) +#undef ELPP_SIMPLE_LOG +#undef ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG + private: + Logger* m_logger; + const base::type::char_t* m_containerLogSeparator; + + template + MessageBuilder& writeIterator(Iterator begin_, Iterator end_, std::size_t size_) { + m_logger->stream() << ELPP_LITERAL("["); + for (std::size_t i = 0; begin_ != end_ && i < base::consts::kMaxLogPerContainer; ++i, ++begin_) { + operator << (*begin_); + m_logger->stream() << ((i < size_ - 1) ? m_containerLogSeparator : ELPP_LITERAL("")); + } + if (begin_ != end_) { + m_logger->stream() << ELPP_LITERAL("..."); + } + m_logger->stream() << ELPP_LITERAL("]"); + if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) { + m_logger->stream() << " "; + } + return *this; + } +}; +/// @brief Writes nothing - Used when certain log is disabled +class NullWriter : base::NoCopy { + public: + NullWriter(void) {} + + // Null manipulator + inline NullWriter& operator<<(std::ostream& (*)(std::ostream&)) { + return *this; + } + + template + inline NullWriter& operator<<(const T&) { + return *this; + } + + inline operator bool() { + return true; + } +}; +/// @brief Main entry point of each logging +class Writer : base::NoCopy { + public: + Writer(Level level, const char* file, base::type::LineNumber line, + const char* func, base::DispatchAction dispatchAction = base::DispatchAction::NormalLog, + base::type::VerboseLevel verboseLevel = 0) : + m_msg(nullptr), m_level(level), m_file(file), m_line(line), m_func(func), m_verboseLevel(verboseLevel), + m_logger(nullptr), m_proceed(false), m_dispatchAction(dispatchAction) { + } + + Writer(LogMessage* msg, base::DispatchAction dispatchAction = base::DispatchAction::NormalLog) : + m_msg(msg), m_level(msg != nullptr ? msg->level() : Level::Unknown), + m_line(0), m_logger(nullptr), m_proceed(false), m_dispatchAction(dispatchAction) { + } + + virtual ~Writer(void) { + processDispatch(); + } + + template + inline Writer& operator<<(const T& log) { +#if ELPP_LOGGING_ENABLED + if (m_proceed) { + m_messageBuilder << log; + } +#endif // ELPP_LOGGING_ENABLED + return *this; + } + + inline Writer& operator<<(std::ostream& (*log)(std::ostream&)) { +#if ELPP_LOGGING_ENABLED + if (m_proceed) { + m_messageBuilder << log; + } +#endif // ELPP_LOGGING_ENABLED + return *this; + } + + inline operator bool() { + return true; + } + + Writer& construct(Logger* logger, bool needLock = true); + Writer& construct(int count, const char* loggerIds, ...); + protected: + LogMessage* m_msg; + Level m_level; + const char* m_file; + const base::type::LineNumber m_line; + const char* m_func; + base::type::VerboseLevel m_verboseLevel; + Logger* m_logger; + bool m_proceed; + base::MessageBuilder m_messageBuilder; + base::DispatchAction m_dispatchAction; + std::vector m_loggerIds; + friend class el::Helpers; + + void initializeLogger(const std::string& loggerId, bool lookup = true, bool needLock = true); + void processDispatch(); + void triggerDispatch(void); +}; +class PErrorWriter : public base::Writer { + public: + PErrorWriter(Level level, const char* file, base::type::LineNumber line, + const char* func, base::DispatchAction dispatchAction = base::DispatchAction::NormalLog, + base::type::VerboseLevel verboseLevel = 0) : + base::Writer(level, file, line, func, dispatchAction, verboseLevel) { + } + + virtual ~PErrorWriter(void); +}; +} // namespace base +// Logging from Logger class. Why this is here? Because we have Storage and Writer class available +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED +template +void Logger::log_(Level level, int vlevel, const char* s, const T& value, const Args&... args) { + base::MessageBuilder b; + b.initialize(this); + while (*s) { + if (*s == base::consts::kFormatSpecifierChar) { + if (*(s + 1) == base::consts::kFormatSpecifierChar) { + ++s; + } else { + if (*(s + 1) == base::consts::kFormatSpecifierCharValue) { + ++s; + b << value; + log_(level, vlevel, ++s, args...); + return; + } + } + } + b << *s++; + } + ELPP_INTERNAL_ERROR("Too many arguments provided. Unable to handle. Please provide more format specifiers", false); +} +template +void Logger::log_(Level level, int vlevel, const T& log) { + if (level == Level::Verbose) { + if (ELPP->vRegistry()->allowed(vlevel, __FILE__)) { + base::Writer(Level::Verbose, "FILE", 0, "FUNCTION", + base::DispatchAction::NormalLog, vlevel).construct(this, false) << log; + } else { + stream().str(ELPP_LITERAL("")); + releaseLock(); + } + } else { + base::Writer(level, "FILE", 0, "FUNCTION").construct(this, false) << log; + } +} +template +inline void Logger::log(Level level, const char* s, const T& value, const Args&... args) { + acquireLock(); // released in Writer! + log_(level, 0, s, value, args...); +} +template +inline void Logger::log(Level level, const T& log) { + acquireLock(); // released in Writer! + log_(level, 0, log); +} +# if ELPP_VERBOSE_LOG +template +inline void Logger::verbose(int vlevel, const char* s, const T& value, const Args&... args) { + acquireLock(); // released in Writer! + log_(el::Level::Verbose, vlevel, s, value, args...); +} +template +inline void Logger::verbose(int vlevel, const T& log) { + acquireLock(); // released in Writer! + log_(el::Level::Verbose, vlevel, log); +} +# else +template +inline void Logger::verbose(int, const char*, const T&, const Args&...) { + return; +} +template +inline void Logger::verbose(int, const T&) { + return; +} +# endif // ELPP_VERBOSE_LOG +# define LOGGER_LEVEL_WRITERS(FUNCTION_NAME, LOG_LEVEL)\ +template \ +inline void Logger::FUNCTION_NAME(const char* s, const T& value, const Args&... args) {\ +log(LOG_LEVEL, s, value, args...);\ +}\ +template \ +inline void Logger::FUNCTION_NAME(const T& value) {\ +log(LOG_LEVEL, value);\ +} +# define LOGGER_LEVEL_WRITERS_DISABLED(FUNCTION_NAME, LOG_LEVEL)\ +template \ +inline void Logger::FUNCTION_NAME(const char*, const T&, const Args&...) {\ +return;\ +}\ +template \ +inline void Logger::FUNCTION_NAME(const T&) {\ +return;\ +} + +# if ELPP_INFO_LOG +LOGGER_LEVEL_WRITERS(info, Level::Info) +# else +LOGGER_LEVEL_WRITERS_DISABLED(info, Level::Info) +# endif // ELPP_INFO_LOG +# if ELPP_DEBUG_LOG +LOGGER_LEVEL_WRITERS(debug, Level::Debug) +# else +LOGGER_LEVEL_WRITERS_DISABLED(debug, Level::Debug) +# endif // ELPP_DEBUG_LOG +# if ELPP_WARNING_LOG +LOGGER_LEVEL_WRITERS(warn, Level::Warning) +# else +LOGGER_LEVEL_WRITERS_DISABLED(warn, Level::Warning) +# endif // ELPP_WARNING_LOG +# if ELPP_ERROR_LOG +LOGGER_LEVEL_WRITERS(error, Level::Error) +# else +LOGGER_LEVEL_WRITERS_DISABLED(error, Level::Error) +# endif // ELPP_ERROR_LOG +# if ELPP_FATAL_LOG +LOGGER_LEVEL_WRITERS(fatal, Level::Fatal) +# else +LOGGER_LEVEL_WRITERS_DISABLED(fatal, Level::Fatal) +# endif // ELPP_FATAL_LOG +# if ELPP_TRACE_LOG +LOGGER_LEVEL_WRITERS(trace, Level::Trace) +# else +LOGGER_LEVEL_WRITERS_DISABLED(trace, Level::Trace) +# endif // ELPP_TRACE_LOG +# undef LOGGER_LEVEL_WRITERS +# undef LOGGER_LEVEL_WRITERS_DISABLED +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED +#if ELPP_COMPILER_MSVC +# define ELPP_VARIADIC_FUNC_MSVC(variadicFunction, variadicArgs) variadicFunction variadicArgs +# define ELPP_VARIADIC_FUNC_MSVC_RUN(variadicFunction, ...) ELPP_VARIADIC_FUNC_MSVC(variadicFunction, (__VA_ARGS__)) +# define el_getVALength(...) ELPP_VARIADIC_FUNC_MSVC_RUN(el_resolveVALength, 0, ## __VA_ARGS__,\ +10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +#else +# if ELPP_COMPILER_CLANG +# define el_getVALength(...) el_resolveVALength(0, __VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +# else +# define el_getVALength(...) el_resolveVALength(0, ## __VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +# endif // ELPP_COMPILER_CLANG +#endif // ELPP_COMPILER_MSVC +#define el_resolveVALength(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N +#define ELPP_WRITE_LOG(writer, level, dispatchAction, ...) \ +writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_IF(writer, condition, level, dispatchAction, ...) if (condition) \ +writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_EVERY_N(writer, occasion, level, dispatchAction, ...) \ +ELPP->validateEveryNCounter(__FILE__, __LINE__, occasion) && \ +writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_AFTER_N(writer, n, level, dispatchAction, ...) \ +ELPP->validateAfterNCounter(__FILE__, __LINE__, n) && \ +writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_N_TIMES(writer, n, level, dispatchAction, ...) \ +ELPP->validateNTimesCounter(__FILE__, __LINE__, n) && \ +writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) +class PerformanceTrackingData { + public: + enum class DataType : base::type::EnumType { + Checkpoint = 1, Complete = 2 + }; + // Do not use constructor, will run into multiple definition error, use init(PerformanceTracker*) + explicit PerformanceTrackingData(DataType dataType) : m_performanceTracker(nullptr), + m_dataType(dataType), m_firstCheckpoint(false), m_file(""), m_line(0), m_func("") {} + inline const std::string* blockName(void) const; + inline const struct timeval* startTime(void) const; + inline const struct timeval* endTime(void) const; + inline const struct timeval* lastCheckpointTime(void) const; + inline const base::PerformanceTracker* performanceTracker(void) const { + return m_performanceTracker; + } + inline PerformanceTrackingData::DataType dataType(void) const { + return m_dataType; + } + inline bool firstCheckpoint(void) const { + return m_firstCheckpoint; + } + inline std::string checkpointId(void) const { + return m_checkpointId; + } + inline const char* file(void) const { + return m_file; + } + inline base::type::LineNumber line(void) const { + return m_line; + } + inline const char* func(void) const { + return m_func; + } + inline const base::type::string_t* formattedTimeTaken() const { + return &m_formattedTimeTaken; + } + inline const std::string& loggerId(void) const; + private: + base::PerformanceTracker* m_performanceTracker; + base::type::string_t m_formattedTimeTaken; + PerformanceTrackingData::DataType m_dataType; + bool m_firstCheckpoint; + std::string m_checkpointId; + const char* m_file; + base::type::LineNumber m_line; + const char* m_func; + inline void init(base::PerformanceTracker* performanceTracker, bool firstCheckpoint = false) { + m_performanceTracker = performanceTracker; + m_firstCheckpoint = firstCheckpoint; + } + + friend class el::base::PerformanceTracker; +}; +namespace base { +/// @brief Represents performanceTracker block of code that conditionally adds performance status to log +/// either when goes outside the scope of when checkpoint() is called +class PerformanceTracker : public base::threading::ThreadSafe, public Loggable { + public: + PerformanceTracker(const std::string& blockName, + base::TimestampUnit timestampUnit = base::TimestampUnit::Millisecond, + const std::string& loggerId = std::string(el::base::consts::kPerformanceLoggerId), + bool scopedLog = true, Level level = base::consts::kPerformanceTrackerDefaultLevel); + /// @brief Copy constructor + PerformanceTracker(const PerformanceTracker& t) : + m_blockName(t.m_blockName), m_timestampUnit(t.m_timestampUnit), m_loggerId(t.m_loggerId), m_scopedLog(t.m_scopedLog), + m_level(t.m_level), m_hasChecked(t.m_hasChecked), m_lastCheckpointId(t.m_lastCheckpointId), m_enabled(t.m_enabled), + m_startTime(t.m_startTime), m_endTime(t.m_endTime), m_lastCheckpointTime(t.m_lastCheckpointTime) { + } + virtual ~PerformanceTracker(void); + /// @brief A checkpoint for current performanceTracker block. + void checkpoint(const std::string& id = std::string(), const char* file = __FILE__, + base::type::LineNumber line = __LINE__, + const char* func = ""); + inline Level level(void) const { + return m_level; + } + private: + std::string m_blockName; + base::TimestampUnit m_timestampUnit; + std::string m_loggerId; + bool m_scopedLog; + Level m_level; + bool m_hasChecked; + std::string m_lastCheckpointId; + bool m_enabled; + struct timeval m_startTime, m_endTime, m_lastCheckpointTime; + + PerformanceTracker(void); + + friend class el::PerformanceTrackingData; + friend class base::DefaultPerformanceTrackingCallback; + + const inline base::type::string_t getFormattedTimeTaken() const { + return getFormattedTimeTaken(m_startTime); + } + + const base::type::string_t getFormattedTimeTaken(struct timeval startTime) const; + + virtual inline void log(el::base::type::ostream_t& os) const { + os << getFormattedTimeTaken(); + } +}; +class DefaultPerformanceTrackingCallback : public PerformanceTrackingCallback { + protected: + void handle(const PerformanceTrackingData* data) { + m_data = data; + base::type::stringstream_t ss; + if (m_data->dataType() == PerformanceTrackingData::DataType::Complete) { + ss << ELPP_LITERAL("Executed [") << m_data->blockName()->c_str() << ELPP_LITERAL("] in [") << + *m_data->formattedTimeTaken() << ELPP_LITERAL("]"); + } else { + ss << ELPP_LITERAL("Performance checkpoint"); + if (!m_data->checkpointId().empty()) { + ss << ELPP_LITERAL(" [") << m_data->checkpointId().c_str() << ELPP_LITERAL("]"); + } + ss << ELPP_LITERAL(" for block [") << m_data->blockName()->c_str() << ELPP_LITERAL("] : [") << + *m_data->performanceTracker(); + if (!ELPP->hasFlag(LoggingFlag::DisablePerformanceTrackingCheckpointComparison) + && m_data->performanceTracker()->m_hasChecked) { + ss << ELPP_LITERAL(" ([") << *m_data->formattedTimeTaken() << ELPP_LITERAL("] from "); + if (m_data->performanceTracker()->m_lastCheckpointId.empty()) { + ss << ELPP_LITERAL("last checkpoint"); + } else { + ss << ELPP_LITERAL("checkpoint '") << m_data->performanceTracker()->m_lastCheckpointId.c_str() << ELPP_LITERAL("'"); + } + ss << ELPP_LITERAL(")]"); + } else { + ss << ELPP_LITERAL("]"); + } + } + el::base::Writer(m_data->performanceTracker()->level(), m_data->file(), m_data->line(), m_data->func()).construct(1, + m_data->loggerId().c_str()) << ss.str(); + } + private: + const PerformanceTrackingData* m_data; +}; +} // namespace base +inline const std::string* PerformanceTrackingData::blockName() const { + return const_cast(&m_performanceTracker->m_blockName); +} +inline const struct timeval* PerformanceTrackingData::startTime() const { + return const_cast(&m_performanceTracker->m_startTime); +} +inline const struct timeval* PerformanceTrackingData::endTime() const { + return const_cast(&m_performanceTracker->m_endTime); +} +inline const struct timeval* PerformanceTrackingData::lastCheckpointTime() const { + return const_cast(&m_performanceTracker->m_lastCheckpointTime); +} +inline const std::string& PerformanceTrackingData::loggerId(void) const { + return m_performanceTracker->m_loggerId; +} +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) +namespace base { +/// @brief Contains some internal debugging tools like crash handler and stack tracer +namespace debug { +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) +class StackTrace : base::NoCopy { + public: + static const unsigned int kMaxStack = 64; + static const unsigned int kStackStart = 2; // We want to skip c'tor and StackTrace::generateNew() + class StackTraceEntry { + public: + StackTraceEntry(std::size_t index, const std::string& loc, const std::string& demang, const std::string& hex, + const std::string& addr); + StackTraceEntry(std::size_t index, const std::string& loc) : + m_index(index), + m_location(loc) { + } + std::size_t m_index; + std::string m_location; + std::string m_demangled; + std::string m_hex; + std::string m_addr; + friend std::ostream& operator<<(std::ostream& ss, const StackTraceEntry& si); + + private: + StackTraceEntry(void); + }; + + StackTrace(void) { + generateNew(); + } + + virtual ~StackTrace(void) { + } + + inline std::vector& getLatestStack(void) { + return m_stack; + } + + friend std::ostream& operator<<(std::ostream& os, const StackTrace& st); + + private: + std::vector m_stack; + + void generateNew(void); +}; +/// @brief Handles unexpected crashes +class CrashHandler : base::NoCopy { + public: + typedef void (*Handler)(int); + + explicit CrashHandler(bool useDefault); + explicit CrashHandler(const Handler& cHandler) { + setHandler(cHandler); + } + void setHandler(const Handler& cHandler); + + private: + Handler m_handler; +}; +#else +class CrashHandler { + public: + explicit CrashHandler(bool) {} +}; +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) +} // namespace debug +} // namespace base +extern base::debug::CrashHandler elCrashHandler; +#define MAKE_LOGGABLE(ClassType, ClassInstance, OutputStreamInstance) \ +el::base::type::ostream_t& operator<<(el::base::type::ostream_t& OutputStreamInstance, const ClassType& ClassInstance) +/// @brief Initializes syslog with process ID, options and facility. calls closelog() on d'tor +class SysLogInitializer { + public: + SysLogInitializer(const char* processIdent, int options = 0, int facility = 0) { +#if defined(ELPP_SYSLOG) + (void)base::consts::kSysLogLoggerId; + openlog(processIdent, options, facility); +#else + ELPP_UNUSED(processIdent); + ELPP_UNUSED(options); + ELPP_UNUSED(facility); +#endif // defined(ELPP_SYSLOG) + } + virtual ~SysLogInitializer(void) { +#if defined(ELPP_SYSLOG) + closelog(); +#endif // defined(ELPP_SYSLOG) + } +}; +#define ELPP_INITIALIZE_SYSLOG(id, opt, fac) el::SysLogInitializer elSyslogInit(id, opt, fac) +/// @brief Static helpers for developers +class Helpers : base::StaticClass { + public: + /// @brief Shares logging repository (base::Storage) + static inline void setStorage(base::type::StoragePointer storage) { + ELPP = storage; + } + /// @return Main storage repository + static inline base::type::StoragePointer storage() { + return ELPP; + } + /// @brief Sets application arguments and figures out whats active for logging and whats not. + static inline void setArgs(int argc, char** argv) { + ELPP->setApplicationArguments(argc, argv); + } + /// @copydoc setArgs(int argc, char** argv) + static inline void setArgs(int argc, const char** argv) { + ELPP->setApplicationArguments(argc, const_cast(argv)); + } + /// @brief Sets thread name for current thread. Requires std::thread + static inline void setThreadName(const std::string& name) { + ELPP->setThreadName(name); + } + static inline std::string getThreadName() { + return ELPP->getThreadName(base::threading::getCurrentThreadId()); + } +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) + /// @brief Overrides default crash handler and installs custom handler. + /// @param crashHandler A functor with no return type that takes single int argument. + /// Handler is a typedef with specification: void (*Handler)(int) + static inline void setCrashHandler(const el::base::debug::CrashHandler::Handler& crashHandler) { + el::elCrashHandler.setHandler(crashHandler); + } + /// @brief Abort due to crash with signal in parameter + /// @param sig Crash signal + static void crashAbort(int sig, const char* sourceFile = "", unsigned int long line = 0); + /// @brief Logs reason of crash as per sig + /// @param sig Crash signal + /// @param stackTraceIfAvailable Includes stack trace if available + /// @param level Logging level + /// @param logger Logger to use for logging + static void logCrashReason(int sig, bool stackTraceIfAvailable = false, + Level level = Level::Fatal, const char* logger = base::consts::kDefaultLoggerId); +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_CRASH_LOG) + /// @brief Installs pre rollout callback, this callback is triggered when log file is about to be rolled out + /// (can be useful for backing up) + static inline void installPreRollOutCallback(const PreRollOutCallback& callback) { + ELPP->setPreRollOutCallback(callback); + } + /// @brief Uninstalls pre rollout callback + static inline void uninstallPreRollOutCallback(void) { + ELPP->unsetPreRollOutCallback(); + } + /// @brief Installs post log dispatch callback, this callback is triggered when log is dispatched + template + static inline bool installLogDispatchCallback(const std::string& id) { + return ELPP->installLogDispatchCallback(id); + } + /// @brief Uninstalls log dispatch callback + template + static inline void uninstallLogDispatchCallback(const std::string& id) { + ELPP->uninstallLogDispatchCallback(id); + } + template + static inline T* logDispatchCallback(const std::string& id) { + return ELPP->logDispatchCallback(id); + } +#if defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + /// @brief Installs post performance tracking callback, this callback is triggered when performance tracking is finished + template + static inline bool installPerformanceTrackingCallback(const std::string& id) { + return ELPP->installPerformanceTrackingCallback(id); + } + /// @brief Uninstalls post performance tracking handler + template + static inline void uninstallPerformanceTrackingCallback(const std::string& id) { + ELPP->uninstallPerformanceTrackingCallback(id); + } + template + static inline T* performanceTrackingCallback(const std::string& id) { + return ELPP->performanceTrackingCallback(id); + } +#endif // defined(ELPP_FEATURE_ALL) || defined(ELPP_FEATURE_PERFORMANCE_TRACKING) + /// @brief Converts template to std::string - useful for loggable classes to log containers within log(std::ostream&) const + template + static std::string convertTemplateToStdString(const T& templ) { + el::Logger* logger = + ELPP->registeredLoggers()->get(el::base::consts::kDefaultLoggerId); + if (logger == nullptr) { + return std::string(); + } + base::MessageBuilder b; + b.initialize(logger); + logger->acquireLock(); + b << templ; +#if defined(ELPP_UNICODE) + std::string s = std::string(logger->stream().str().begin(), logger->stream().str().end()); +#else + std::string s = logger->stream().str(); +#endif // defined(ELPP_UNICODE) + logger->stream().str(ELPP_LITERAL("")); + logger->releaseLock(); + return s; + } + /// @brief Returns command line arguments (pointer) provided to easylogging++ + static inline const el::base::utils::CommandLineArgs* commandLineArgs(void) { + return ELPP->commandLineArgs(); + } + /// @brief Reserve space for custom format specifiers for performance + /// @see std::vector::reserve + static inline void reserveCustomFormatSpecifiers(std::size_t size) { + ELPP->m_customFormatSpecifiers.reserve(size); + } + /// @brief Installs user defined format specifier and handler + static inline void installCustomFormatSpecifier(const CustomFormatSpecifier& customFormatSpecifier) { + ELPP->installCustomFormatSpecifier(customFormatSpecifier); + } + /// @brief Uninstalls user defined format specifier and handler + static inline bool uninstallCustomFormatSpecifier(const char* formatSpecifier) { + return ELPP->uninstallCustomFormatSpecifier(formatSpecifier); + } + /// @brief Returns true if custom format specifier is installed + static inline bool hasCustomFormatSpecifier(const char* formatSpecifier) { + return ELPP->hasCustomFormatSpecifier(formatSpecifier); + } + static inline void validateFileRolling(Logger* logger, Level level) { + if (ELPP == nullptr || logger == nullptr) return; + logger->m_typedConfigurations->validateFileRolling(level, ELPP->preRollOutCallback()); + } +}; +/// @brief Static helpers to deal with loggers and their configurations +class Loggers : base::StaticClass { + public: + /// @brief Gets existing or registers new logger + static Logger* getLogger(const std::string& identity, bool registerIfNotAvailable = true); + /// @brief Changes default log builder for future loggers + static void setDefaultLogBuilder(el::LogBuilderPtr& logBuilderPtr); + /// @brief Installs logger registration callback, this callback is triggered when new logger is registered + template + static inline bool installLoggerRegistrationCallback(const std::string& id) { + return ELPP->registeredLoggers()->installLoggerRegistrationCallback(id); + } + /// @brief Uninstalls log dispatch callback + template + static inline void uninstallLoggerRegistrationCallback(const std::string& id) { + ELPP->registeredLoggers()->uninstallLoggerRegistrationCallback(id); + } + template + static inline T* loggerRegistrationCallback(const std::string& id) { + return ELPP->registeredLoggers()->loggerRegistrationCallback(id); + } + /// @brief Unregisters logger - use it only when you know what you are doing, you may unregister + /// loggers initialized / used by third-party libs. + static bool unregisterLogger(const std::string& identity); + /// @brief Whether or not logger with id is registered + static bool hasLogger(const std::string& identity); + /// @brief Reconfigures specified logger with new configurations + static Logger* reconfigureLogger(Logger* logger, const Configurations& configurations); + /// @brief Reconfigures logger with new configurations after looking it up using identity + static Logger* reconfigureLogger(const std::string& identity, const Configurations& configurations); + /// @brief Reconfigures logger's single configuration + static Logger* reconfigureLogger(const std::string& identity, ConfigurationType configurationType, + const std::string& value); + /// @brief Reconfigures all the existing loggers with new configurations + static void reconfigureAllLoggers(const Configurations& configurations); + /// @brief Reconfigures single configuration for all the loggers + static inline void reconfigureAllLoggers(ConfigurationType configurationType, const std::string& value) { + reconfigureAllLoggers(Level::Global, configurationType, value); + } + /// @brief Reconfigures single configuration for all the loggers for specified level + static void reconfigureAllLoggers(Level level, ConfigurationType configurationType, + const std::string& value); + /// @brief Sets default configurations. This configuration is used for future (and conditionally for existing) loggers + static void setDefaultConfigurations(const Configurations& configurations, + bool reconfigureExistingLoggers = false); + /// @brief Returns current default + static const Configurations* defaultConfigurations(void); + /// @brief Returns log stream reference pointer if needed by user + static const base::LogStreamsReferenceMapPtr logStreamsReference(void); + /// @brief Default typed configuration based on existing defaultConf + static base::TypedConfigurations defaultTypedConfigurations(void); + /// @brief Populates all logger IDs in current repository. + /// @param [out] targetList List of fill up. + static std::vector* populateAllLoggerIds(std::vector* targetList); + /// @brief Sets configurations from global configuration file. + static void configureFromGlobal(const char* globalConfigurationFilePath); + /// @brief Configures loggers using command line arg. Ensure you have already set command line args, + /// @return False if invalid argument or argument with no value provided, true if attempted to configure logger. + /// If true is returned that does not mean it has been configured successfully, it only means that it + /// has attempted to configure logger using configuration file provided in argument + static bool configureFromArg(const char* argKey); + /// @brief Flushes all loggers for all levels - Be careful if you dont know how many loggers are registered + static void flushAll(void); + /// @brief Adds logging flag used internally. + static inline void addFlag(LoggingFlag flag) { + ELPP->addFlag(flag); + } + /// @brief Removes logging flag used internally. + static inline void removeFlag(LoggingFlag flag) { + ELPP->removeFlag(flag); + } + /// @brief Determines whether or not certain flag is active + static inline bool hasFlag(LoggingFlag flag) { + return ELPP->hasFlag(flag); + } + /// @brief Adds flag and removes it when scope goes out + class ScopedAddFlag { + public: + ScopedAddFlag(LoggingFlag flag) : m_flag(flag) { + Loggers::addFlag(m_flag); + } + ~ScopedAddFlag(void) { + Loggers::removeFlag(m_flag); + } + private: + LoggingFlag m_flag; + }; + /// @brief Removes flag and add it when scope goes out + class ScopedRemoveFlag { + public: + ScopedRemoveFlag(LoggingFlag flag) : m_flag(flag) { + Loggers::removeFlag(m_flag); + } + ~ScopedRemoveFlag(void) { + Loggers::addFlag(m_flag); + } + private: + LoggingFlag m_flag; + }; + /// @brief Sets hierarchy for logging. Needs to enable logging flag (HierarchicalLogging) + static void setLoggingLevel(Level level) { + ELPP->setLoggingLevel(level); + } + /// @brief Sets verbose level on the fly + static void setVerboseLevel(base::type::VerboseLevel level); + /// @brief Gets current verbose level + static base::type::VerboseLevel verboseLevel(void); + /// @brief Sets vmodules as specified (on the fly) + static void setVModules(const char* modules); + /// @brief Clears vmodules + static void clearVModules(void); +}; +class VersionInfo : base::StaticClass { + public: + /// @brief Current version number + static const std::string version(void); + + /// @brief Release date of current version + static const std::string releaseDate(void); +}; +} // namespace el +#undef VLOG_IS_ON +/// @brief Determines whether verbose logging is on for specified level current file. +#define VLOG_IS_ON(verboseLevel) (ELPP->vRegistry()->allowed(verboseLevel, __FILE__)) +#undef TIMED_BLOCK +#undef TIMED_SCOPE +#undef TIMED_SCOPE_IF +#undef TIMED_FUNC +#undef TIMED_FUNC_IF +#undef ELPP_MIN_UNIT +#if defined(ELPP_PERFORMANCE_MICROSECONDS) +# define ELPP_MIN_UNIT el::base::TimestampUnit::Microsecond +#else +# define ELPP_MIN_UNIT el::base::TimestampUnit::Millisecond +#endif // (defined(ELPP_PERFORMANCE_MICROSECONDS)) +/// @brief Performance tracked scope. Performance gets written when goes out of scope using +/// 'performance' logger. +/// +/// @detail Please note in order to check the performance at a certain time you can use obj->checkpoint(); +/// @see el::base::PerformanceTracker +/// @see el::base::PerformanceTracker::checkpoint +// Note: Do not surround this definition with null macro because of obj instance +#define TIMED_SCOPE_IF(obj, blockname, condition) el::base::type::PerformanceTrackerPtr obj( condition ? \ + new el::base::PerformanceTracker(blockname, ELPP_MIN_UNIT) : nullptr ) +#define TIMED_SCOPE(obj, blockname) TIMED_SCOPE_IF(obj, blockname, true) +#define TIMED_BLOCK(obj, blockName) for (struct { int i; el::base::type::PerformanceTrackerPtr timer; } obj = { 0, \ + el::base::type::PerformanceTrackerPtr(new el::base::PerformanceTracker(blockName, ELPP_MIN_UNIT)) }; obj.i < 1; ++obj.i) +/// @brief Performance tracked function. Performance gets written when goes out of scope using +/// 'performance' logger. +/// +/// @detail Please note in order to check the performance at a certain time you can use obj->checkpoint(); +/// @see el::base::PerformanceTracker +/// @see el::base::PerformanceTracker::checkpoint +#define TIMED_FUNC_IF(obj,condition) TIMED_SCOPE_IF(obj, ELPP_FUNC, condition) +#define TIMED_FUNC(obj) TIMED_SCOPE(obj, ELPP_FUNC) +#undef PERFORMANCE_CHECKPOINT +#undef PERFORMANCE_CHECKPOINT_WITH_ID +#define PERFORMANCE_CHECKPOINT(obj) obj->checkpoint(std::string(), __FILE__, __LINE__, ELPP_FUNC) +#define PERFORMANCE_CHECKPOINT_WITH_ID(obj, id) obj->checkpoint(id, __FILE__, __LINE__, ELPP_FUNC) +#undef ELPP_COUNTER +#undef ELPP_COUNTER_POS +/// @brief Gets hit counter for file/line +#define ELPP_COUNTER (ELPP->hitCounters()->getCounter(__FILE__, __LINE__)) +/// @brief Gets hit counter position for file/line, -1 if not registered yet +#define ELPP_COUNTER_POS (ELPP_COUNTER == nullptr ? -1 : ELPP_COUNTER->hitCounts()) +// Undef levels to support LOG(LEVEL) +#undef INFO +#undef WARNING +#undef DEBUG +#undef ERROR +#undef FATAL +#undef TRACE +#undef VERBOSE +// Undef existing +#undef CINFO +#undef CWARNING +#undef CDEBUG +#undef CFATAL +#undef CERROR +#undef CTRACE +#undef CVERBOSE +#undef CINFO_IF +#undef CWARNING_IF +#undef CDEBUG_IF +#undef CERROR_IF +#undef CFATAL_IF +#undef CTRACE_IF +#undef CVERBOSE_IF +#undef CINFO_EVERY_N +#undef CWARNING_EVERY_N +#undef CDEBUG_EVERY_N +#undef CERROR_EVERY_N +#undef CFATAL_EVERY_N +#undef CTRACE_EVERY_N +#undef CVERBOSE_EVERY_N +#undef CINFO_AFTER_N +#undef CWARNING_AFTER_N +#undef CDEBUG_AFTER_N +#undef CERROR_AFTER_N +#undef CFATAL_AFTER_N +#undef CTRACE_AFTER_N +#undef CVERBOSE_AFTER_N +#undef CINFO_N_TIMES +#undef CWARNING_N_TIMES +#undef CDEBUG_N_TIMES +#undef CERROR_N_TIMES +#undef CFATAL_N_TIMES +#undef CTRACE_N_TIMES +#undef CVERBOSE_N_TIMES +// Normal logs +#if ELPP_INFO_LOG +# define CINFO(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE(writer, vlevel, dispatchAction, ...) if (VLOG_IS_ON(vlevel)) writer(\ +el::Level::Verbose, __FILE__, __LINE__, ELPP_FUNC, dispatchAction, vlevel).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#else +# define CVERBOSE(writer, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG +// Conditional logs +#if ELPP_INFO_LOG +# define CINFO_IF(writer, condition_, dispatchAction, ...) \ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_IF(writer, condition_, dispatchAction, ...)\ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_IF(writer, condition_, dispatchAction, ...)\ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_IF(writer, condition_, dispatchAction, ...)\ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_IF(writer, condition_, dispatchAction, ...)\ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_IF(writer, condition_, dispatchAction, ...)\ +ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_IF(writer, condition_, vlevel, dispatchAction, ...) if (VLOG_IS_ON(vlevel) && (condition_)) writer( \ +el::Level::Verbose, __FILE__, __LINE__, ELPP_FUNC, dispatchAction, vlevel).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#else +# define CVERBOSE_IF(writer, condition_, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG +// Occasional logs +#if ELPP_INFO_LOG +# define CINFO_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_EVERY_N(writer, occasion, dispatchAction, ...)\ +ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_EVERY_N(writer, occasion, vlevel, dispatchAction, ...)\ +CVERBOSE_IF(writer, ELPP->validateEveryNCounter(__FILE__, __LINE__, occasion), vlevel, dispatchAction, __VA_ARGS__) +#else +# define CVERBOSE_EVERY_N(writer, occasion, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG +// After N logs +#if ELPP_INFO_LOG +# define CINFO_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_AFTER_N(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_AFTER_N(writer, n, vlevel, dispatchAction, ...)\ +CVERBOSE_IF(writer, ELPP->validateAfterNCounter(__FILE__, __LINE__, n), vlevel, dispatchAction, __VA_ARGS__) +#else +# define CVERBOSE_AFTER_N(writer, n, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG +// N Times logs +#if ELPP_INFO_LOG +# define CINFO_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_N_TIMES(writer, n, dispatchAction, ...)\ +ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_N_TIMES(writer, n, vlevel, dispatchAction, ...)\ +CVERBOSE_IF(writer, ELPP->validateNTimesCounter(__FILE__, __LINE__, n), vlevel, dispatchAction, __VA_ARGS__) +#else +# define CVERBOSE_N_TIMES(writer, n, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG +// +// Custom Loggers - Requires (level, dispatchAction, loggerId/s) +// +// undef existing +#undef CLOG +#undef CLOG_VERBOSE +#undef CVLOG +#undef CLOG_IF +#undef CLOG_VERBOSE_IF +#undef CVLOG_IF +#undef CLOG_EVERY_N +#undef CVLOG_EVERY_N +#undef CLOG_AFTER_N +#undef CVLOG_AFTER_N +#undef CLOG_N_TIMES +#undef CVLOG_N_TIMES +// Normal logs +#define CLOG(LEVEL, ...)\ +C##LEVEL(el::base::Writer, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG(vlevel, ...) CVERBOSE(el::base::Writer, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +// Conditional logs +#define CLOG_IF(condition, LEVEL, ...)\ +C##LEVEL##_IF(el::base::Writer, condition, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_IF(condition, vlevel, ...)\ +CVERBOSE_IF(el::base::Writer, condition, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +// Hit counts based logs +#define CLOG_EVERY_N(n, LEVEL, ...)\ +C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_EVERY_N(n, vlevel, ...)\ +CVERBOSE_EVERY_N(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CLOG_AFTER_N(n, LEVEL, ...)\ +C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_AFTER_N(n, vlevel, ...)\ +CVERBOSE_AFTER_N(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CLOG_N_TIMES(n, LEVEL, ...)\ +C##LEVEL##_N_TIMES(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_N_TIMES(n, vlevel, ...)\ +CVERBOSE_N_TIMES(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +// +// Default Loggers macro using CLOG(), CLOG_VERBOSE() and CVLOG() macros +// +// undef existing +#undef LOG +#undef VLOG +#undef LOG_IF +#undef VLOG_IF +#undef LOG_EVERY_N +#undef VLOG_EVERY_N +#undef LOG_AFTER_N +#undef VLOG_AFTER_N +#undef LOG_N_TIMES +#undef VLOG_N_TIMES +#undef ELPP_CURR_FILE_LOGGER_ID +#if defined(ELPP_DEFAULT_LOGGER) +# define ELPP_CURR_FILE_LOGGER_ID ELPP_DEFAULT_LOGGER +#else +# define ELPP_CURR_FILE_LOGGER_ID el::base::consts::kDefaultLoggerId +#endif +#undef ELPP_TRACE +#define ELPP_TRACE CLOG(TRACE, ELPP_CURR_FILE_LOGGER_ID) +// Normal logs +#define LOG(LEVEL) CLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG(vlevel) CVLOG(vlevel, ELPP_CURR_FILE_LOGGER_ID) +// Conditional logs +#define LOG_IF(condition, LEVEL) CLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_IF(condition, vlevel) CVLOG_IF(condition, vlevel, ELPP_CURR_FILE_LOGGER_ID) +// Hit counts based logs +#define LOG_EVERY_N(n, LEVEL) CLOG_EVERY_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_EVERY_N(n, vlevel) CVLOG_EVERY_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define LOG_AFTER_N(n, LEVEL) CLOG_AFTER_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_AFTER_N(n, vlevel) CVLOG_AFTER_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define LOG_N_TIMES(n, LEVEL) CLOG_N_TIMES(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_N_TIMES(n, vlevel) CVLOG_N_TIMES(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +// Generic PLOG() +#undef CPLOG +#undef CPLOG_IF +#undef PLOG +#undef PLOG_IF +#undef DCPLOG +#undef DCPLOG_IF +#undef DPLOG +#undef DPLOG_IF +#define CPLOG(LEVEL, ...)\ +C##LEVEL(el::base::PErrorWriter, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CPLOG_IF(condition, LEVEL, ...)\ +C##LEVEL##_IF(el::base::PErrorWriter, condition, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define DCPLOG(LEVEL, ...)\ +if (ELPP_DEBUG_LOG) C##LEVEL(el::base::PErrorWriter, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define DCPLOG_IF(condition, LEVEL, ...)\ +C##LEVEL##_IF(el::base::PErrorWriter, (ELPP_DEBUG_LOG) && (condition), el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define PLOG(LEVEL) CPLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define PLOG_IF(condition, LEVEL) CPLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DPLOG(LEVEL) DCPLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DPLOG_IF(condition, LEVEL) DCPLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +// Generic SYSLOG() +#undef CSYSLOG +#undef CSYSLOG_IF +#undef CSYSLOG_EVERY_N +#undef CSYSLOG_AFTER_N +#undef CSYSLOG_N_TIMES +#undef SYSLOG +#undef SYSLOG_IF +#undef SYSLOG_EVERY_N +#undef SYSLOG_AFTER_N +#undef SYSLOG_N_TIMES +#undef DCSYSLOG +#undef DCSYSLOG_IF +#undef DCSYSLOG_EVERY_N +#undef DCSYSLOG_AFTER_N +#undef DCSYSLOG_N_TIMES +#undef DSYSLOG +#undef DSYSLOG_IF +#undef DSYSLOG_EVERY_N +#undef DSYSLOG_AFTER_N +#undef DSYSLOG_N_TIMES +#if defined(ELPP_SYSLOG) +# define CSYSLOG(LEVEL, ...)\ +C##LEVEL(el::base::Writer, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_IF(condition, LEVEL, ...)\ +C##LEVEL##_IF(el::base::Writer, condition, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_EVERY_N(n, LEVEL, ...) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_AFTER_N(n, LEVEL, ...) C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_N_TIMES(n, LEVEL, ...) C##LEVEL##_N_TIMES(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define SYSLOG(LEVEL) CSYSLOG(LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_IF(condition, LEVEL) CSYSLOG_IF(condition, LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_EVERY_N(n, LEVEL) CSYSLOG_EVERY_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_AFTER_N(n, LEVEL) CSYSLOG_AFTER_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_N_TIMES(n, LEVEL) CSYSLOG_N_TIMES(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define DCSYSLOG(LEVEL, ...) if (ELPP_DEBUG_LOG) C##LEVEL(el::base::Writer, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_IF(condition, LEVEL, ...)\ +C##LEVEL##_IF(el::base::Writer, (ELPP_DEBUG_LOG) && (condition), el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_EVERY_N(n, LEVEL, ...)\ +if (ELPP_DEBUG_LOG) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_AFTER_N(n, LEVEL, ...)\ +if (ELPP_DEBUG_LOG) C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_N_TIMES(n, LEVEL, ...)\ +if (ELPP_DEBUG_LOG) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DSYSLOG(LEVEL) DCSYSLOG(LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_IF(condition, LEVEL) DCSYSLOG_IF(condition, LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_EVERY_N(n, LEVEL) DCSYSLOG_EVERY_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_AFTER_N(n, LEVEL) DCSYSLOG_AFTER_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_N_TIMES(n, LEVEL) DCSYSLOG_N_TIMES(n, LEVEL, el::base::consts::kSysLogLoggerId) +#else +# define CSYSLOG(LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_IF(condition, LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_EVERY_N(n, LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_AFTER_N(n, LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_N_TIMES(n, LEVEL, ...) el::base::NullWriter() +# define SYSLOG(LEVEL) el::base::NullWriter() +# define SYSLOG_IF(condition, LEVEL) el::base::NullWriter() +# define SYSLOG_EVERY_N(n, LEVEL) el::base::NullWriter() +# define SYSLOG_AFTER_N(n, LEVEL) el::base::NullWriter() +# define SYSLOG_N_TIMES(n, LEVEL) el::base::NullWriter() +# define DCSYSLOG(LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_IF(condition, LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_EVERY_N(n, LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_AFTER_N(n, LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_N_TIMES(n, LEVEL, ...) el::base::NullWriter() +# define DSYSLOG(LEVEL) el::base::NullWriter() +# define DSYSLOG_IF(condition, LEVEL) el::base::NullWriter() +# define DSYSLOG_EVERY_N(n, LEVEL) el::base::NullWriter() +# define DSYSLOG_AFTER_N(n, LEVEL) el::base::NullWriter() +# define DSYSLOG_N_TIMES(n, LEVEL) el::base::NullWriter() +#endif // defined(ELPP_SYSLOG) +// +// Custom Debug Only Loggers - Requires (level, loggerId/s) +// +// undef existing +#undef DCLOG +#undef DCVLOG +#undef DCLOG_IF +#undef DCVLOG_IF +#undef DCLOG_EVERY_N +#undef DCVLOG_EVERY_N +#undef DCLOG_AFTER_N +#undef DCVLOG_AFTER_N +#undef DCLOG_N_TIMES +#undef DCVLOG_N_TIMES +// Normal logs +#define DCLOG(LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG(LEVEL, __VA_ARGS__) +#define DCLOG_VERBOSE(vlevel, ...) if (ELPP_DEBUG_LOG) CLOG_VERBOSE(vlevel, __VA_ARGS__) +#define DCVLOG(vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG(vlevel, __VA_ARGS__) +// Conditional logs +#define DCLOG_IF(condition, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_IF(condition, LEVEL, __VA_ARGS__) +#define DCVLOG_IF(condition, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_IF(condition, vlevel, __VA_ARGS__) +// Hit counts based logs +#define DCLOG_EVERY_N(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_EVERY_N(n, LEVEL, __VA_ARGS__) +#define DCVLOG_EVERY_N(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_EVERY_N(n, vlevel, __VA_ARGS__) +#define DCLOG_AFTER_N(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_AFTER_N(n, LEVEL, __VA_ARGS__) +#define DCVLOG_AFTER_N(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_AFTER_N(n, vlevel, __VA_ARGS__) +#define DCLOG_N_TIMES(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_N_TIMES(n, LEVEL, __VA_ARGS__) +#define DCVLOG_N_TIMES(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_N_TIMES(n, vlevel, __VA_ARGS__) +// +// Default Debug Only Loggers macro using CLOG(), CLOG_VERBOSE() and CVLOG() macros +// +#if !defined(ELPP_NO_DEBUG_MACROS) +// undef existing +#undef DLOG +#undef DVLOG +#undef DLOG_IF +#undef DVLOG_IF +#undef DLOG_EVERY_N +#undef DVLOG_EVERY_N +#undef DLOG_AFTER_N +#undef DVLOG_AFTER_N +#undef DLOG_N_TIMES +#undef DVLOG_N_TIMES +// Normal logs +#define DLOG(LEVEL) DCLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG(vlevel) DCVLOG(vlevel, ELPP_CURR_FILE_LOGGER_ID) +// Conditional logs +#define DLOG_IF(condition, LEVEL) DCLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_IF(condition, vlevel) DCVLOG_IF(condition, vlevel, ELPP_CURR_FILE_LOGGER_ID) +// Hit counts based logs +#define DLOG_EVERY_N(n, LEVEL) DCLOG_EVERY_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_EVERY_N(n, vlevel) DCVLOG_EVERY_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define DLOG_AFTER_N(n, LEVEL) DCLOG_AFTER_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_AFTER_N(n, vlevel) DCVLOG_AFTER_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define DLOG_N_TIMES(n, LEVEL) DCLOG_N_TIMES(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_N_TIMES(n, vlevel) DCVLOG_N_TIMES(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#endif // defined(ELPP_NO_DEBUG_MACROS) +#if !defined(ELPP_NO_CHECK_MACROS) +// Check macros +#undef CCHECK +#undef CPCHECK +#undef CCHECK_EQ +#undef CCHECK_NE +#undef CCHECK_LT +#undef CCHECK_GT +#undef CCHECK_LE +#undef CCHECK_GE +#undef CCHECK_BOUNDS +#undef CCHECK_NOTNULL +#undef CCHECK_STRCASEEQ +#undef CCHECK_STRCASENE +#undef CHECK +#undef PCHECK +#undef CHECK_EQ +#undef CHECK_NE +#undef CHECK_LT +#undef CHECK_GT +#undef CHECK_LE +#undef CHECK_GE +#undef CHECK_BOUNDS +#undef CHECK_NOTNULL +#undef CHECK_STRCASEEQ +#undef CHECK_STRCASENE +#define CCHECK(condition, ...) CLOG_IF(!(condition), FATAL, __VA_ARGS__) << "Check failed: [" << #condition << "] " +#define CPCHECK(condition, ...) CPLOG_IF(!(condition), FATAL, __VA_ARGS__) << "Check failed: [" << #condition << "] " +#define CHECK(condition) CCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#define PCHECK(condition) CPCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#define CCHECK_EQ(a, b, ...) CCHECK(a == b, __VA_ARGS__) +#define CCHECK_NE(a, b, ...) CCHECK(a != b, __VA_ARGS__) +#define CCHECK_LT(a, b, ...) CCHECK(a < b, __VA_ARGS__) +#define CCHECK_GT(a, b, ...) CCHECK(a > b, __VA_ARGS__) +#define CCHECK_LE(a, b, ...) CCHECK(a <= b, __VA_ARGS__) +#define CCHECK_GE(a, b, ...) CCHECK(a >= b, __VA_ARGS__) +#define CCHECK_BOUNDS(val, min, max, ...) CCHECK(val >= min && val <= max, __VA_ARGS__) +#define CHECK_EQ(a, b) CCHECK_EQ(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_NE(a, b) CCHECK_NE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_LT(a, b) CCHECK_LT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_GT(a, b) CCHECK_GT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_LE(a, b) CCHECK_LE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_GE(a, b) CCHECK_GE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_BOUNDS(val, min, max) CCHECK_BOUNDS(val, min, max, ELPP_CURR_FILE_LOGGER_ID) +#define CCHECK_NOTNULL(ptr, ...) CCHECK((ptr) != nullptr, __VA_ARGS__) +#define CCHECK_STREQ(str1, str2, ...) CLOG_IF(!el::base::utils::Str::cStringEq(str1, str2), FATAL, __VA_ARGS__) \ +<< "Check failed: [" << #str1 << " == " << #str2 << "] " +#define CCHECK_STRNE(str1, str2, ...) CLOG_IF(el::base::utils::Str::cStringEq(str1, str2), FATAL, __VA_ARGS__) \ +<< "Check failed: [" << #str1 << " != " << #str2 << "] " +#define CCHECK_STRCASEEQ(str1, str2, ...) CLOG_IF(!el::base::utils::Str::cStringCaseEq(str1, str2), FATAL, __VA_ARGS__) \ +<< "Check failed: [" << #str1 << " == " << #str2 << "] " +#define CCHECK_STRCASENE(str1, str2, ...) CLOG_IF(el::base::utils::Str::cStringCaseEq(str1, str2), FATAL, __VA_ARGS__) \ +<< "Check failed: [" << #str1 << " != " << #str2 << "] " +#define CHECK_NOTNULL(ptr) CCHECK_NOTNULL((ptr), ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STREQ(str1, str2) CCHECK_STREQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STRNE(str1, str2) CCHECK_STRNE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STRCASEEQ(str1, str2) CCHECK_STRCASEEQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STRCASENE(str1, str2) CCHECK_STRCASENE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#undef DCCHECK +#undef DCCHECK_EQ +#undef DCCHECK_NE +#undef DCCHECK_LT +#undef DCCHECK_GT +#undef DCCHECK_LE +#undef DCCHECK_GE +#undef DCCHECK_BOUNDS +#undef DCCHECK_NOTNULL +#undef DCCHECK_STRCASEEQ +#undef DCCHECK_STRCASENE +#undef DCPCHECK +#undef DCHECK +#undef DCHECK_EQ +#undef DCHECK_NE +#undef DCHECK_LT +#undef DCHECK_GT +#undef DCHECK_LE +#undef DCHECK_GE +#undef DCHECK_BOUNDS_ +#undef DCHECK_NOTNULL +#undef DCHECK_STRCASEEQ +#undef DCHECK_STRCASENE +#undef DPCHECK +#define DCCHECK(condition, ...) if (ELPP_DEBUG_LOG) CCHECK(condition, __VA_ARGS__) +#define DCCHECK_EQ(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_EQ(a, b, __VA_ARGS__) +#define DCCHECK_NE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_NE(a, b, __VA_ARGS__) +#define DCCHECK_LT(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_LT(a, b, __VA_ARGS__) +#define DCCHECK_GT(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_GT(a, b, __VA_ARGS__) +#define DCCHECK_LE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_LE(a, b, __VA_ARGS__) +#define DCCHECK_GE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_GE(a, b, __VA_ARGS__) +#define DCCHECK_BOUNDS(val, min, max, ...) if (ELPP_DEBUG_LOG) CCHECK_BOUNDS(val, min, max, __VA_ARGS__) +#define DCCHECK_NOTNULL(ptr, ...) if (ELPP_DEBUG_LOG) CCHECK_NOTNULL((ptr), __VA_ARGS__) +#define DCCHECK_STREQ(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STREQ(str1, str2, __VA_ARGS__) +#define DCCHECK_STRNE(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRNE(str1, str2, __VA_ARGS__) +#define DCCHECK_STRCASEEQ(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRCASEEQ(str1, str2, __VA_ARGS__) +#define DCCHECK_STRCASENE(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRCASENE(str1, str2, __VA_ARGS__) +#define DCPCHECK(condition, ...) if (ELPP_DEBUG_LOG) CPCHECK(condition, __VA_ARGS__) +#define DCHECK(condition) DCCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_EQ(a, b) DCCHECK_EQ(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_NE(a, b) DCCHECK_NE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_LT(a, b) DCCHECK_LT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_GT(a, b) DCCHECK_GT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_LE(a, b) DCCHECK_LE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_GE(a, b) DCCHECK_GE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_BOUNDS(val, min, max) DCCHECK_BOUNDS(val, min, max, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_NOTNULL(ptr) DCCHECK_NOTNULL((ptr), ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STREQ(str1, str2) DCCHECK_STREQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STRNE(str1, str2) DCCHECK_STRNE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STRCASEEQ(str1, str2) DCCHECK_STRCASEEQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STRCASENE(str1, str2) DCCHECK_STRCASENE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DPCHECK(condition) DCPCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#endif // defined(ELPP_NO_CHECK_MACROS) +#if defined(ELPP_DISABLE_DEFAULT_CRASH_HANDLING) +# define ELPP_USE_DEF_CRASH_HANDLER false +#else +# define ELPP_USE_DEF_CRASH_HANDLER true +#endif // defined(ELPP_DISABLE_DEFAULT_CRASH_HANDLING) +#define ELPP_CRASH_HANDLER_INIT +#define ELPP_INIT_EASYLOGGINGPP(val) \ +namespace el { \ +namespace base { \ +el::base::type::StoragePointer elStorage(val); \ +} \ +el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER); \ +} + +#if ELPP_ASYNC_LOGGING +# define INITIALIZE_EASYLOGGINGPP ELPP_INIT_EASYLOGGINGPP(new el::base::Storage(el::LogBuilderPtr(new el::base::DefaultLogBuilder()),\ +new el::base::AsyncDispatchWorker())) +#else +# define INITIALIZE_EASYLOGGINGPP ELPP_INIT_EASYLOGGINGPP(new el::base::Storage(el::LogBuilderPtr(new el::base::DefaultLogBuilder()))) +#endif // ELPP_ASYNC_LOGGING +#define INITIALIZE_NULL_EASYLOGGINGPP \ +namespace el {\ +namespace base {\ +el::base::type::StoragePointer elStorage;\ +}\ +el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER);\ +} +#define SHARE_EASYLOGGINGPP(initializedStorage)\ +namespace el {\ +namespace base {\ +el::base::type::StoragePointer elStorage(initializedStorage);\ +}\ +el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER);\ +} + +#if defined(ELPP_UNICODE) +# define START_EASYLOGGINGPP(argc, argv) el::Helpers::setArgs(argc, argv); std::locale::global(std::locale("")) +#else +# define START_EASYLOGGINGPP(argc, argv) el::Helpers::setArgs(argc, argv) +#endif // defined(ELPP_UNICODE) +#endif // EASYLOGGINGPP_H diff --git a/src/workers/basekissat.cpp b/src/workers/basekissat.cpp index cc53cf3..a7db2cd 100644 --- a/src/workers/basekissat.cpp +++ b/src/workers/basekissat.cpp @@ -16,7 +16,7 @@ void basekissat::add(int l) { } void basekissat::configure(const char* name, int val) { - printf("c %d set %s to %d\n", id, name, val); + // printf("c %d set %s to %d\n", id, name, val); kissat_set_option(solver, name, val); } diff --git a/src/workers/sharer.cpp b/src/workers/sharer.cpp index 68ac766..7122cb3 100644 --- a/src/workers/sharer.cpp +++ b/src/workers/sharer.cpp @@ -15,7 +15,7 @@ void * share_worker(void *arg) { usleep(sq->share_intv); auto clk_now = std::chrono::high_resolution_clock::now(); int solve_time = std::chrono::duration_cast(clk_now - clk_st).count(); - printf("c round %d, time: %d.%03d\n", nums, solve_time / 1000, solve_time % 1000); + LOGGER->info("round %v, time: %v.%v", nums, solve_time / 1000, solve_time % 1000); if (terminated) break; // printf("start sharing %d\n", sq->share_intv); for (int i = 0; i < sq->producers.size(); i++) { @@ -114,7 +114,7 @@ int sharer::sort_clauses(int x) { } void light::share() { - printf("c sharing start\n"); + // printf("c sharing start\n"); if (OPT(DPS)) { sharer* s = new sharer(0, OPT(share_intv), OPT(share_lits), OPT(DPS)); s->margin = OPT(margin);