diff options
author | bd <bdunahu@operationnull.com> | 2025-03-10 20:06:43 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-03-10 20:06:43 -0400 |
commit | d16bb09d1e3bc79f94a7fcc43153fceb00af0df9 (patch) | |
tree | aabab88d0715d3ee193069fa1a5a5eff29b56f1e /src | |
parent | 3f07846136767cbed13fd83baaba416f19c61667 (diff) |
Make logger a global singleton class
Diffstat (limited to 'src')
-rw-r--r-- | src/logger/logger.cc | 22 | ||||
-rw-r--r-- | src/main.cc | 20 |
2 files changed, 27 insertions, 15 deletions
diff --git a/src/logger/logger.cc b/src/logger/logger.cc index fb5052a..55d7a15 100644 --- a/src/logger/logger.cc +++ b/src/logger/logger.cc @@ -5,6 +5,10 @@ #include <sstream> using namespace std; +LogLevel Logger::level = INFO; +ofstream Logger::logFile; +Logger *Logger::logger_instance; + Logger::Logger(const string &filename) { if (!filename.empty()) { @@ -17,11 +21,11 @@ Logger::Logger(const string &filename) Logger::~Logger() { logFile.close(); } -void Logger::setLevel(LogLevel level) { this->level = level; } +void Logger::setLevel(LogLevel level) { level = level; } void Logger::log(LogLevel level, const string &message) { - if (levelToInt(level) > levelToInt(this->level)) { + if (level_to_int(level) > level_to_int(level)) { return; } @@ -31,7 +35,7 @@ void Logger::log(LogLevel level, const string &message) strftime(timestamp, sizeof(timestamp), "%Y-%m-%d %H:%M:%S", timeinfo); ostringstream logEntry; - logEntry << "[" << timestamp << "] " << levelToString(level) << ": " + logEntry << "[" << timestamp << "] " << level_to_string(level) << ": " << message << endl; cout << logEntry.str(); @@ -42,7 +46,15 @@ void Logger::log(LogLevel level, const string &message) } } -string Logger::levelToString(LogLevel level) +Logger *Logger::getInstance() +{ + if (logger_instance == nullptr) { + logger_instance = new Logger("vector.log"); + } + return logger_instance; +} + +string Logger::level_to_string(LogLevel level) { switch (level) { case DEBUG: @@ -60,7 +72,7 @@ string Logger::levelToString(LogLevel level) } } -int Logger::levelToInt(LogLevel level) +int Logger::level_to_int(LogLevel level) { switch (level) { case DEBUG: diff --git a/src/main.cc b/src/main.cc index cc5fbb3..520a7e1 100644 --- a/src/main.cc +++ b/src/main.cc @@ -31,26 +31,26 @@ static void err() << std::endl; } -static void parseArguments(int argc, char **argv, Logger &logger, bool &python) +static void parseArguments(int argc, char **argv, bool &python) { + Logger *logger = Logger::getInstance(); struct option long_options[] = { {"debug", no_argument, 0, 'd'}, {"no-python", no_argument, 0, 'p'}, - {"version", no_argument, 0, 'v'}, {0, 0, 0, 0}}; python = true; int opt; - while ((opt = getopt_long(argc, argv, "d:p:v", long_options, NULL)) != -1) { + while ((opt = getopt_long(argc, argv, "d:p", long_options, NULL)) != -1) { switch (opt) { case 'd': - logger.setLevel(DEBUG); - logger.log(DEBUG, "DEBUG output enabled."); + logger->setLevel(DEBUG); + logger->log(DEBUG, "DEBUG output enabled."); break; case 'p': - logger.log(INFO, "Python will NOT be started!"); + logger->log(INFO, "Python will NOT be started!"); python = false; break; case 'v': @@ -66,17 +66,17 @@ static void parseArguments(int argc, char **argv, Logger &logger, bool &python) int main(int argc, char **argv) { print_version_number(); - Logger logger("vector.log"); + Logger *logger = Logger::getInstance(); Cli cli; - logger.log(INFO, "Initializing..."); + logger->log(INFO, "Initializing..."); bool python = true; - parseArguments(argc, argv, logger, python); + parseArguments(argc, argv, python); if (python) { // fork off python here ; - logger.log(INFO, "Python started."); + logger->log(INFO, "Python started."); } cli.run(); |