Very simple logging library. Allows logging of 4 levels.

Dependents:   NeoPixelI2cSlave NeoPixelI2cSlave

log.h

Committer:
dwini
Date:
2015-10-23
Revision:
0:72f7f0c5204b

File content as of revision 0:72f7f0c5204b:

#pragma once

#include "mbed.h"
#include <stdio.h>
#include <stdarg.h>
#include <ctime>

// Define this before loading the header file to enable debug mode
//#define DEBUG_MODE 1

namespace SimplyLog
{
    class Log
    {
        public:
            static void e(char* fmt, ...) {
                char buffer [80];
                Log::getTimestamp(buffer);

                va_list args;
                va_start(args,fmt);
                printf("%s ", buffer);
                printf("[ERROR] ");
                vprintf(fmt,args);
                va_end(args);
            }

            static void w(char* fmt, ...) {
                char buffer [80];
                Log::getTimestamp(buffer);

                va_list args;
                va_start(args,fmt);
                printf("%s ", buffer);
                printf("[WARNING] ");
                vprintf(fmt,args);
                va_end(args);
            }

            static void d(char* fmt, ...) {
                #ifdef DEBUG_MODE
                char buffer [80];
                Log::getTimestamp(buffer);

                va_list args;
                va_start(args,fmt);
                printf("%s ", buffer);
                printf("[DEBUG] ");
                vprintf(fmt,args);
                va_end(args);
                #endif
            }

            static void i(char* fmt, ...) {
                #ifdef DEBUG_MODE
                char buffer [80];
                Log::getTimestamp(buffer);

                va_list args;
                va_start(args,fmt);
                printf("%s ", buffer);
                printf("[INFO] ");
                vprintf(fmt,args);
                va_end(args);
                #endif
            }

        private:
            static void getTimestamp(char * buffer) {
                time_t rawtime;
                struct tm * timeinfo;

                time (&rawtime);
                timeinfo = localtime (&rawtime);

                strftime(buffer, 80, "%d-%m-%Y|%H:%M:%S", timeinfo);
            }
    };
}