Serial output logger based on the LoggerInterface

Dependencies:   LoggerInterface

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