Serial output logger based on the LoggerInterface
Diff: LogIt.cpp
- Revision:
- 0:0c84a9b17408
- Child:
- 1:5c3eeae51c21
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LogIt.cpp Thu Nov 24 14:26:03 2016 +0000 @@ -0,0 +1,119 @@ +#include "LogIt.h" +#include <stdarg.h> +#include <stdio.h> + +LogIt::LogIt(Serial* serial) +{ + this->serial = serial; +} + +void LogIt::emergency(char* message, ...) +{ + va_list args; + va_start (args, message); + log(EMERGENCY, message, args); + va_end (args); +} + +void LogIt::alert(char* message, ...) +{ + va_list args; + va_start (args, message); + log(ALERT, message, args); + va_end (args); +} + +void LogIt::critical(char* message, ...) +{ + va_list args; + va_start (args, message); + log(CRITICAL, message, args); + va_end (args); +} + +void LogIt::error(char* message, ...) +{ + va_list args; + va_start (args, message); + log(ERROR, message, args); + va_end (args); +} + +void LogIt::warning(char* message, ...) +{ + va_list args; + va_start (args, message); + log(WARNING, message, args); + va_end (args); +} + +void LogIt::notice(char* message, ...) +{ + va_list args; + va_start (args, message); + log(NOTICE, message, args); + va_end (args); +} + +void LogIt::info(char* message, ...) +{ + va_list args; + va_start (args, message); + log(INFO, message, args); + va_end (args); +} + +void LogIt::debug(char* message, ...) +{ + va_list args; + va_start (args, message); + log(DEBUG,message, args); + va_end (args); +} + +void LogIt::log(Level level, char* message, ...) +{ + if(level > this->level){ return; } + char levelString[16]; + switch(level) + { + case EMERGENCY: + strcpy(levelString, "EMERGENCY"); + break; + case ALERT: + strcpy(levelString, "ALERT"); + break; + case CRITICAL: + strcpy(levelString, "CRITICAL"); + break; + case ERROR: + strcpy(levelString, "ERROR"); + break; + case WARNING: + strcpy(levelString, "WARNING"); + break; + case NOTICE: + strcpy(levelString, "NOTICE"); + break; + case INFO: + strcpy(levelString, "INFO"); + break; + case DEBUG: + strcpy(levelString, "DEBUG"); + break; + default: + strcpy(levelString, "DEBUG"); + break; + } + char buffer[256]; + va_list args; + va_start (args, message); + vsprintf (buffer,message, args); + serial->printf("%9s: %s\r\n", levelString, buffer); + va_end (args); +} + +void LogIt::setLevel(Level level) +{ + this->level = level; +} \ No newline at end of file