Files
cpp17-threaded-app-non-thre…/logger/src/logger.cpp
T
user ac9373c2c9 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.
2026-07-19 16:48:54 +04:00

45 lines
1.1 KiB
C++

#include "logger.hpp"
#include <fstream>
namespace logger {
Logger::Logger(const std::string &fileName, LogLevel defaultLevel)
: fileName_(fileName), defaultLevel_(defaultLevel) {}
Logger::~Logger() = default;
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);
}
Logger Logger::withFileName(const std::string &fileName) const {
return Logger(fileName, defaultLevel_);
}
LogLevel Logger::getLogLevel() const { return defaultLevel_; }
const std::string &Logger::getFileName() const { return fileName_; }
} // namespace logger