Fix Windows ERROR macro collision in logger

This commit is contained in:
Kelsi 2026-02-25 11:14:53 -08:00
parent e1614d55a2
commit 35384b2c52
3 changed files with 8 additions and 4 deletions

View file

@ -26,6 +26,10 @@ enum class LogLevel {
FATAL
};
// Avoid direct token use of `ERROR` at call sites because Windows headers
// define `ERROR` as a macro.
inline constexpr LogLevel kLogLevelError = LogLevel::ERROR;
class Logger {
public:
static Logger& getInstance();
@ -128,7 +132,7 @@ private:
#define LOG_ERROR(...) do { \
auto& _wowee_logger = wowee::core::Logger::getInstance(); \
if (_wowee_logger.shouldLog(wowee::core::LogLevel::ERROR)) { \
if (_wowee_logger.shouldLog(wowee::core::kLogLevelError)) { \
_wowee_logger.error(__VA_ARGS__); \
} \
} while (0)

View file

@ -49,7 +49,7 @@ void Logger::ensureFile() {
if (v == "debug") setLogLevel(LogLevel::DEBUG);
else if (v == "info") setLogLevel(LogLevel::INFO);
else if (v == "warn" || v == "warning") setLogLevel(LogLevel::WARNING);
else if (v == "error") setLogLevel(LogLevel::ERROR);
else if (v == "error") setLogLevel(kLogLevelError);
else if (v == "fatal") setLogLevel(LogLevel::FATAL);
}
std::error_code ec;
@ -83,7 +83,7 @@ void Logger::emitLineLocked(LogLevel level, const std::string& message) {
case LogLevel::DEBUG: line << "DEBUG"; break;
case LogLevel::INFO: line << "INFO "; break;
case LogLevel::WARNING: line << "WARN "; break;
case LogLevel::ERROR: line << "ERROR"; break;
case kLogLevelError: line << "ERROR"; break;
case LogLevel::FATAL: line << "FATAL"; break;
}

View file

@ -38,7 +38,7 @@ static wowee::core::LogLevel readLogLevelFromEnv() {
if (level == "debug") return wowee::core::LogLevel::DEBUG;
if (level == "info") return wowee::core::LogLevel::INFO;
if (level == "warn" || level == "warning") return wowee::core::LogLevel::WARNING;
if (level == "error") return wowee::core::LogLevel::ERROR;
if (level == "error") return wowee::core::kLogLevelError;
if (level == "fatal") return wowee::core::LogLevel::FATAL;
return wowee::core::LogLevel::WARNING;
}