Files
cpp17-threaded-app-non-thre…/logger/src/logger.cpp
T

45 lines
1.1 KiB
C++
Raw Normal View History

#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