#ifndef LOGGER_H #define LOGGER_H #include namespace Logger { enum Level { L_NONE, L_ERROR, L_WARNING, L_INFO, L_DEBUG }; extern Level level; } #if defined(LOG_LEVEL) && LOG_LEVEL >= 1 #define LOG_ERROR(text) \ if(Logger::level >= Logger::Level::L_ERROR) { \ StringBuffer<512> s("\33[1;31m[ERROR] "); \ s.append(text); \ s.append("\33[39;49m"); \ s.printLine(); \ } #else #define LOG_ERROR(text) #endif #if defined(LOG_LEVEL) && LOG_LEVEL >= 2 #define LOG_WARNING(text) \ if(Logger::level >= Logger::Level::L_WARNING) { \ StringBuffer<512> s("\33[1;33m[WARNING] "); \ s.append(text); \ s.append("\33[39;49m"); \ s.printLine(); \ } #else #define LOG_WARNING(text) #endif #if defined(LOG_LEVEL) && LOG_LEVEL >= 3 #define LOG_INFO(text) \ if(Logger::level >= Logger::Level::L_INFO) { \ StringBuffer<512> s("\33[1;37m[INFO] "); \ s.append(text); \ s.append("\33[39;49m"); \ s.printLine(); \ } #else #define LOG_INFO(text) #endif #if defined(LOG_LEVEL) && LOG_LEVEL >= 4 #define LOG_DEBUG(text) \ if(Logger::level >= Logger::Level::L_DEBUG) { \ StringBuffer<512> s("\33[1;32m[DEBUG] "); \ s.append(text); \ s.append("\33[39;49m"); \ s.printLine(); \ } #else #define LOG_DEBUG(text) #endif #endif