summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-03-10 20:06:43 -0400
committerbd <bdunahu@operationnull.com>2025-03-10 20:06:43 -0400
commita69b57c4e850e55167424d890a7a2e7a46460e71 (patch)
treeaabab88d0715d3ee193069fa1a5a5eff29b56f1e /src
parent4dbe50416eea0fecc2aa6f5ce3dc7032c95234c5 (diff)
Make logger a global singleton class
Diffstat (limited to 'src')
-rw-r--r--src/logger/logger.cc22
-rw-r--r--src/main.cc20
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();