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:
user
2026-07-19 16:48:54 +04:00
parent f610505e90
commit ac9373c2c9
5 changed files with 142 additions and 40 deletions
+19 -4
View File
@@ -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);
}