aboutsummaryrefslogtreecommitdiffstats
path: root/yage/core/logger.cpp
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-11-12 22:30:20 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-11-12 22:30:20 +0000
commite68759a4101567a27e306eae0a907baa759ae80c (patch)
treec90733351cb7a8a02f91725118593c1c4f19c563 /yage/core/logger.cpp
parent5fb7c972d44a3ce0a067101885d2e0c1966e7c89 (diff)
downloadYAGE-e68759a4101567a27e306eae0a907baa759ae80c.tar.gz
YAGE-e68759a4101567a27e306eae0a907baa759ae80c.zip
Designing simple preview game
Diffstat (limited to 'yage/core/logger.cpp')
-rw-r--r--yage/core/logger.cpp39
1 files changed, 33 insertions, 6 deletions
diff --git a/yage/core/logger.cpp b/yage/core/logger.cpp
index d289c0e6..9fba2239 100644
--- a/yage/core/logger.cpp
+++ b/yage/core/logger.cpp
@@ -7,25 +7,52 @@
*/
#include "logger.h"
+#include "logmessage.h"
+#include "logsink.h"
+#include <algorithm>
#include <iostream>
#include <string>
namespace yage
{
-LogMessage Logger::operator()()
+Logger::Logger()
{
- return LogMessage(this);
+ add(makeConsoleSink());
+}
+
+LogMessage Logger::operator()(const std::string &fileName, int lineNum)
+{
+ return LogMessage(this, fileName, lineNum);
}
void Logger::flush(const LogMessage *msg)
{
- using std::string;
- using std::cout;
+ std::string asString(msg->buffer_.str());
- string asString(msg->buffer_.str());
- cout << asString << "\n";
+ for (auto &&sink : sinks_) {
+ sink.write(msg->meta_, asString);
+ }
+}
+
+void Logger::add(const LogSink &sink)
+{
+ sinks_.push_back(sink);
+}
+
+void Logger::remove(const LogSink &sink)
+{
+ auto it = std::find(std::begin(sinks_), std::end(sinks_), sink);
+
+ if(it != std::end(sinks_)) {
+ sinks_.erase(it);
+ }
+}
+
+void Logger::clear()
+{
+ sinks_.clear();
}
Logger &Logger::instance()