From e68759a4101567a27e306eae0a907baa759ae80c Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sun, 12 Nov 2017 22:30:20 +0000 Subject: Designing simple preview game --- yage/core/logger.cpp | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) (limited to 'yage/core/logger.cpp') 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 #include #include 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() -- cgit