Skip to content

Commit e0103fc

Browse files
committed
improved logger class
1 parent 2ebfabd commit e0103fc

File tree

7 files changed

+47
-5
lines changed

7 files changed

+47
-5
lines changed

application/src/Application.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ int main (int argc, char** argv) {
4343
auto logger = UtilsFactory::createLogger (LoggerType::Console, loggerConfig);
4444

4545
// Initialize assets
46-
auto assetManager =
47-
UtilsFactory::createAssetManager (execPathResult.value (), appName);
46+
auto assetManager = UtilsFactory::createAssetManager (execPathResult.value (), appName);
4847

4948
if (!assetManager->validate ()) {
5049
logger->errorStream () << "Failed to validate assets: " << assetManager->getAssetsPath ();

src/Utils/Logger/ConsoleLogger.hpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class ConsoleLogger : public dotnamecpp::logging::ILogger {
2424
std::mutex logMutex_;
2525
std::ofstream logFile_;
2626
bool addNewLine_ = true;
27+
std::string appPrefix_;
2728

2829
/**
2930
* @brief Current logging level for the console logger defined at compile time.
@@ -47,7 +48,9 @@ class ConsoleLogger : public dotnamecpp::logging::ILogger {
4748
ConsoleLogger (const ConsoleLogger&) = delete;
4849
ConsoleLogger& operator= (const ConsoleLogger&) = delete;
4950
ConsoleLogger (ConsoleLogger&& other) noexcept : logFile_ (std::move (other.logFile_)),
50-
addNewLine_ (other.addNewLine_) {
51+
addNewLine_ (other.addNewLine_),
52+
appPrefix_ (std::move (other.appPrefix_)),
53+
currentLevel_ (other.currentLevel_) {
5154
}
5255

5356
ConsoleLogger& operator= (ConsoleLogger&& other) noexcept {
@@ -59,6 +62,7 @@ class ConsoleLogger : public dotnamecpp::logging::ILogger {
5962

6063
logFile_ = std::move (other.logFile_);
6164
addNewLine_ = other.addNewLine_;
65+
appPrefix_ = std::move (other.appPrefix_);
6266
currentLevel_ = other.currentLevel_;
6367
}
6468
return *this;
@@ -109,6 +113,9 @@ class ConsoleLogger : public dotnamecpp::logging::ILogger {
109113

110114
// Create log header
111115
std::ostringstream header;
116+
if (!appPrefix_.empty ()) {
117+
header << "[" << appPrefix_ << "]";
118+
}
112119
header << "[" << std::put_time (&now_tm, "%Y-%m-%d %H:%M:%S") << "]";
113120
header << "[" << levelToString (level) << "]";
114121
if (!caller.empty ()) {
@@ -144,6 +151,16 @@ class ConsoleLogger : public dotnamecpp::logging::ILogger {
144151
return currentLevel_;
145152
};
146153

154+
void setAppPrefix (const std::string& prefix) override {
155+
std::lock_guard<std::mutex> lock (logMutex_);
156+
appPrefix_ = prefix;
157+
};
158+
159+
[[nodiscard]]
160+
std::string getAppPrefix () const override {
161+
return appPrefix_;
162+
};
163+
147164
bool enableFileLogging (const std::string& filename) override {
148165
std::lock_guard<std::mutex> lock (logMutex_);
149166
try {
@@ -391,7 +408,6 @@ class ConsoleLogger : public dotnamecpp::logging::ILogger {
391408
showHeaderCaller (incCaller);
392409
showHeaderLevel (incLevel);
393410
}
394-
395411
}; // class ConsoleLogger
396412

397413
#endif

src/Utils/Logger/ILogger.hpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,20 @@ namespace dotnamecpp::logging {
124124
[[nodiscard]]
125125
virtual Level getLevel () const = 0;
126126

127+
/**
128+
* @brief Set the application prefix for log messages
129+
*
130+
* @param prefix
131+
*/
132+
virtual void setAppPrefix (const std::string& prefix) = 0;
133+
134+
/**
135+
* @brief Get the App Prefix object
136+
*
137+
* @return std::string
138+
*/
139+
virtual std::string getAppPrefix () const = 0;
140+
127141
/**
128142
* @brief Enable logging to a file
129143
*

src/Utils/Logger/LoggerFactory.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ namespace dotnamecpp::logging {
2020
auto logger = std::make_shared<ConsoleLogger> ();
2121
logger->setLevel (config.level);
2222

23+
if (!config.appPrefix.empty ()) {
24+
logger->setAppPrefix (config.appPrefix);
25+
}
26+
2327
if (config.enableFileLogging && !config.logFilePath.empty ()) {
2428
logger->enableFileLogging (config.logFilePath);
2529
}

src/Utils/Logger/LoggerFactory.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ namespace dotnamecpp::logging {
1515
bool enableFileLogging = false;
1616
std::string logFilePath;
1717
bool colorOutput = true;
18+
std::string appPrefix;
1819
};
1920

2021
class LoggerFactory {

src/Utils/Logger/NullLogger.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,17 @@ namespace dotnamecpp::logging {
2525
Level getLevel () const override {
2626
return Level::LOG_INFO;
2727
}
28+
void setAppPrefix (const std::string& /*prefix*/) override {
29+
}
30+
31+
std::string getAppPrefix () const override {
32+
return "";
33+
}
2834

2935
bool enableFileLogging (const std::string& /*filename*/) override {
3036
return true;
3137
}
38+
3239
void disableFileLogging () override {
3340
}
3441
};

src/Utils/UtilsFactory.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ namespace dotnamecpp::utils {
7878
LoggerConfig config{ .level = dotnamecpp::logging::Level::LOG_INFO,
7979
.enableFileLogging = false,
8080
.logFilePath = "",
81-
.colorOutput = true };
81+
.colorOutput = true,
82+
.appPrefix = "" };
8283
return createLogger (LoggerType::Console, config);
8384
}
8485

0 commit comments

Comments
 (0)