summaryrefslogtreecommitdiffstats
path: root/mmc_updater/src/Log.h
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-12-10 07:22:22 +0100
committerPetr Mrázek <peterix@gmail.com>2013-12-10 07:22:22 +0100
commitaa61bbe9e414648399aff2802df5b587dee1a084 (patch)
treeff7809bea445bb76c9fd27a3245e1b2cb7c72596 /mmc_updater/src/Log.h
parent3f5c46a1c4b27e82976e0067e4ec2d6abfffd9ba (diff)
parent712b87c643bbd7bc4ed2cfd459d0b9fdb69e5f0d (diff)
downloadMultiMC-aa61bbe9e414648399aff2802df5b587dee1a084.tar
MultiMC-aa61bbe9e414648399aff2802df5b587dee1a084.tar.gz
MultiMC-aa61bbe9e414648399aff2802df5b587dee1a084.tar.lz
MultiMC-aa61bbe9e414648399aff2802df5b587dee1a084.tar.xz
MultiMC-aa61bbe9e414648399aff2802df5b587dee1a084.zip
Merge branch 'develop' of github.com:MultiMC/MultiMC5 into develop
Conflicts: CMakeLists.txt gui/MainWindow.cpp
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)
+
+