summaryrefslogtreecommitdiffstats
path: root/mmc_updater/src/Log.h
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-12-02 00:55:24 +0100
committerPetr Mrázek <peterix@gmail.com>2013-12-02 00:55:24 +0100
commit6aa9bd0f77dcb5128167fae62e32aa5252fe85c6 (patch)
tree632994a61888929af9289927d338bd19a2b3f32c /mmc_updater/src/Log.h
parent613699b3626aea750093ab7eaaeccaa28c0e87c6 (diff)
downloadMultiMC-6aa9bd0f77dcb5128167fae62e32aa5252fe85c6.tar
MultiMC-6aa9bd0f77dcb5128167fae62e32aa5252fe85c6.tar.gz
MultiMC-6aa9bd0f77dcb5128167fae62e32aa5252fe85c6.tar.lz
MultiMC-6aa9bd0f77dcb5128167fae62e32aa5252fe85c6.tar.xz
MultiMC-6aa9bd0f77dcb5128167fae62e32aa5252fe85c6.zip
Renew the updater branch
Now with some actual consensus on what the updater will do!
Diffstat (limited to 'mmc_updater/src/Log.h')
-rw-r--r--mmc_updater/src/Log.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/mmc_updater/src/Log.h b/mmc_updater/src/Log.h
new file mode 100644
index 00000000..cf6be832
--- /dev/null
+++ b/mmc_updater/src/Log.h
@@ -0,0 +1,46 @@
+#pragma once
+
+#include <string>
+#include <fstream>
+
+#include <thread>
+#include <mutex>
+
+class Log
+{
+ public:
+ enum Type
+ {
+ Info,
+ Warn,
+ Error
+ };
+
+ Log();
+ ~Log();
+
+ void open(const std::string& path);
+
+ /** Write @p text to the log. This method is thread-safe. */
+ void write(Type type, const std::string& text);
+ /** Write @p text to the log. This method is thread-safe. */
+ void write(Type type, const char* text);
+
+ static Log* instance();
+
+ private:
+ static void writeToStream(std::ostream& stream, Type type, const char* text);
+
+ std::mutex m_mutex;
+ std::ofstream m_output;
+};
+
+inline void Log::write(Type type, const std::string& text)
+{
+ write(type,text.c_str());
+}
+
+#define LOG(type,text) \
+ Log::instance()->write(Log::type,text)
+
+