Serial output logger based on the LoggerInterface

Dependencies:   LoggerInterface

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers LogIt.cpp Source File

LogIt.cpp

00001 #include "LogIt.h"
00002 #include <stdarg.h>
00003 #include <stdio.h>
00004 
00005 LogIt::LogIt(mbed::Serial* serial)
00006 {
00007     this->serial = serial;
00008 }
00009 
00010 void LogIt::emergency(const char* message, ...)
00011 {
00012     va_list args;
00013     va_start (args, message);
00014     log(EMERGENCY, message, args);
00015     va_end (args);
00016 }
00017 
00018 void LogIt::alert(const char* message, ...)
00019 {
00020     va_list args;
00021     va_start (args, message);
00022     log(ALERT, message, args);
00023     va_end (args);
00024 }
00025 
00026 void LogIt::critical(const char* message, ...)
00027 {
00028     va_list args;
00029     va_start (args, message);
00030     log(CRITICAL, message, args);
00031     va_end (args);
00032 }
00033 
00034 void LogIt::error(const char* message, ...)
00035 {
00036     va_list args;
00037     va_start (args, message);
00038     log(ERROR, message, args);
00039     va_end (args);
00040 }
00041 
00042 void LogIt::warning(const char* message, ...)
00043 {
00044     va_list args;
00045     va_start (args, message);
00046     log(WARNING, message, args);
00047     va_end (args);
00048 }
00049 
00050 void LogIt::notice(const char* message, ...)
00051 {
00052     va_list args;
00053     va_start (args, message);
00054     log(NOTICE, message, args);
00055     va_end (args);
00056 }
00057 
00058 void LogIt::info(const char* message, ...)
00059 {
00060     va_list args;
00061     va_start (args, message);
00062     log(INFO, message, args);
00063     va_end (args);
00064 }
00065 
00066 void LogIt::debug(const char* message, ...)
00067 {
00068     va_list args;
00069     va_start (args, message);
00070     log(DEBUG,message, args);
00071     va_end (args);
00072 }
00073 
00074 void LogIt::log(Level level, const char* message, ...)
00075 {
00076   va_list args;
00077   va_start (args, message);
00078   log(level,message, args);
00079   va_end (args);
00080 }
00081 
00082 void LogIt::log(Level level, const char* message, va_list args)
00083 {
00084     if(level > this->level){ return; }
00085     char levelString[16];
00086     switch(level)
00087     {
00088         case EMERGENCY:
00089             strcpy(levelString, "EMERGENCY");
00090             break;
00091         case ALERT:
00092             strcpy(levelString, "ALERT");
00093             break;
00094         case CRITICAL:
00095             strcpy(levelString, "CRITICAL");
00096             break;
00097         case ERROR:
00098             strcpy(levelString, "ERROR");
00099             break;
00100         case WARNING:
00101             strcpy(levelString, "WARNING");
00102             break;
00103         case NOTICE:
00104             strcpy(levelString, "NOTICE");
00105             break;
00106         case INFO:
00107             strcpy(levelString, "INFO");
00108             break;
00109         case DEBUG:
00110             strcpy(levelString, "DEBUG");
00111             break;
00112         default:
00113             strcpy(levelString, "DEBUG");
00114             break;
00115     }
00116     char buffer[256];
00117     //va_list args;
00118     //va_start (args, message);
00119     vsprintf (buffer,message, args);
00120     serial->printf("%9s: %s\r\n", levelString, buffer);
00121     //va_end (args);
00122 }
00123 
00124 void LogIt::setLevel(Level level)
00125 {
00126     this->level = level;
00127 }