aboutsummaryrefslogtreecommitdiffstats
path: root/logging.h
diff options
context:
space:
mode:
authorAntony Woods <acron1@gmail.com>2014-05-20 17:17:56 +0100
committerAntony Woods <acron1@gmail.com>2014-05-20 17:17:56 +0100
commitdccb246cf8ba7b5480320088a817c29a4a7c8da3 (patch)
treec251f3ab13aaf3b8a5f76afe0d3ddd100db0c3b6 /logging.h
parent62ace917d325040bbf3015536d2ad3725b711c6d (diff)
downloadcrow-dccb246cf8ba7b5480320088a817c29a4a7c8da3.tar.gz
crow-dccb246cf8ba7b5480320088a817c29a4a7c8da3.zip
Added primitive logging
Diffstat (limited to 'logging.h')
-rw-r--r--logging.h68
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)
+
+
+