diff options
author | Antony Woods <acron1@gmail.com> | 2014-05-20 17:17:56 +0100 |
---|---|---|
committer | Antony Woods <acron1@gmail.com> | 2014-05-20 17:17:56 +0100 |
commit | dccb246cf8ba7b5480320088a817c29a4a7c8da3 (patch) | |
tree | c251f3ab13aaf3b8a5f76afe0d3ddd100db0c3b6 /logging.h | |
parent | 62ace917d325040bbf3015536d2ad3725b711c6d (diff) | |
download | crow-dccb246cf8ba7b5480320088a817c29a4a7c8da3.tar.gz crow-dccb246cf8ba7b5480320088a817c29a4a7c8da3.zip |
Added primitive logging
Diffstat (limited to 'logging.h')
-rw-r--r-- | logging.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/logging.h b/logging.h new file mode 100644 index 0000000..5a23303 --- /dev/null +++ b/logging.h @@ -0,0 +1,68 @@ +#pragma once + +#include <string> +#include <chrono> +#include <stdio.h> +#include <stdlib.h> +#include <time.h> + +using namespace std; + +string timeStamp() +{ + char date[32]; + time_t t = time(0); + strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", gmtime(&t)); + return string(date); +} + +class logger { + + public: + + // + enum class Level + { + CRITICAL, + ERROR, + WARNING, + INFO, + DEBUG + }; + + // + logger(string prefix, logger::Level level) : m_prefix(prefix), m_level(level) { + + } + ~logger() { +#ifdef CROW_ENABLE_LOGGING + cerr << "(" << timeStamp() << ") [" << m_prefix << "] " << m_stringStream.str() << endl; +#endif + } + + // + template <typename T> + logger& operator<<(T const &value) { + +#ifdef CROW_ENABLE_LOGGING + m_stringStream << value; +#endif + return *this; + } + + private: + + // + ostringstream m_stringStream; + string m_prefix; + Level m_level; +}; + +#define CROW_LOG_CRITICAL logger("CRITICAL", logger::Level::CRITICAL) +#define CROW_LOG_ERROR logger("ERROR ", logger::Level::ERROR) +#define CROW_LOG_WARNING logger("WARNING ", logger::Level::WARNING) +#define CROW_LOG_INFO logger("INFO ", logger::Level::INFO) +#define CROW_LOG_DEBUG logger("DEBUG ", logger::Level::DEBUG) + + + |