feat: introduce LogLevel value object and improve logger API
- Replace LogLevel enum with a dedicated class that encapsulates log level representation. - Add factory methods for creating Debug, Info, and Error levels. - Add string conversion support through LogLevel::toString(). - Add equality comparison operators for LogLevel instances. - Rename Logger::writeLog() to writeMessage(). - Add writeMessage() overload that uses the default log level. - Implement actual file writing with error handling using core::Status. - Improve logger documentation to reflect the updated API. - Update logger tests to use the new LogLevel API. - Move logger tests into the core test directory. - Replace enum-based log level usage with LogLevel factory methods. - Update test cases for the renamed writeMessage() method.
This commit is contained in:
+19
-4
@@ -1,7 +1,7 @@
|
||||
// logger.cpp
|
||||
|
||||
#include "logger.hpp"
|
||||
|
||||
#include <fstream>
|
||||
|
||||
namespace logger {
|
||||
|
||||
Logger::Logger(const std::string &fileName, LogLevel defaultLevel)
|
||||
@@ -9,11 +9,26 @@ Logger::Logger(const std::string &fileName, LogLevel defaultLevel)
|
||||
|
||||
Logger::~Logger() = default;
|
||||
|
||||
core::Status Logger::writeLog(LogLevel /*level*/,
|
||||
const std::string & /*message*/) {
|
||||
core::Status Logger::writeMessage(LogLevel level, const std::string &message) {
|
||||
std::ofstream stream(fileName_, std::ios::app);
|
||||
|
||||
if (!stream.is_open()) {
|
||||
return core::Status::Failure("Unable to open log file: " + fileName_);
|
||||
}
|
||||
|
||||
stream << "[" << level.toString() << "] " << message << '\n';
|
||||
|
||||
if (!stream.good()) {
|
||||
return core::Status::Failure("Failed to write to log file: " + fileName_);
|
||||
}
|
||||
|
||||
return core::Status::Success(true);
|
||||
}
|
||||
|
||||
core::Status Logger::writeMessage(const std::string &message) {
|
||||
return writeMessage(defaultLevel_, message);
|
||||
}
|
||||
|
||||
Logger Logger::withLogLevel(LogLevel level) const {
|
||||
return Logger(fileName_, level);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user