aboutsummaryrefslogtreecommitdiffstats
path: root/yage/core/logger.cpp
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2018-01-06 11:30:24 +0000
committerYann Herklotz <ymherklotz@gmail.com>2018-01-06 11:30:24 +0000
commitc7090180503f263c60ec34844992e0e8d4bea85a (patch)
tree6ecc5b2e16856db49de056738b36e1ba103d3049 /yage/core/logger.cpp
parentcf4c73f2a75b470a4d4c4167105f92bc46f1926c (diff)
parent07012cf0982d3f86aebe83b5bdc4a67332c635da (diff)
downloadYAGE-c7090180503f263c60ec34844992e0e8d4bea85a.tar.gz
YAGE-c7090180503f263c60ec34844992e0e8d4bea85a.zip
Merge branch 'develop'
Diffstat (limited to 'yage/core/logger.cpp')
-rw-r--r--yage/core/logger.cpp55
1 files changed, 41 insertions, 14 deletions
diff --git a/yage/core/logger.cpp b/yage/core/logger.cpp
index f661e826..1ae04d0b 100644
--- a/yage/core/logger.cpp
+++ b/yage/core/logger.cpp
@@ -19,29 +19,51 @@
namespace yage
{
-Logger::Logger() : active_(Active::create())
+Logger::Logger() : active_(Active::create()), min_level_(LogLevel::INFO)
{
add(makeConsoleSink());
- add(makeFileSink("yage.log"));
}
-LogMessage Logger::operator()(const std::string &fileName, int lineNum)
+Logger::Logger(const std::string &file_path)
+ : active_(Active::create()), min_level_(LogLevel::INFO)
{
- return LogMessage(this, fileName, lineNum);
+ add(makeConsoleSink());
+ add(makeFileSink(file_path));
+}
+
+Logger::Logger(LogLevel min_level)
+ : active_(Active::create()), min_level_(min_level)
+{
+ add(makeConsoleSink());
+}
+
+Logger::Logger(LogLevel min_level, const std::string &file_path)
+ : active_(Active::create()), min_level_(min_level)
+{
+ add(makeConsoleSink());
+ add(makeFileSink(file_path));
+}
+
+LogMessage Logger::operator()(LogLevel level, const std::string &fileName,
+ int lineNum)
+{
+ return LogMessage(this, level, fileName, lineNum);
}
void Logger::flush(const LogMessage *msg)
{
- std::string asString(msg->buffer_.str());
+ if (static_cast<int>(msg->meta_.level) >= static_cast<int>(min_level_)) {
+ std::string asString(msg->buffer_.str());
- auto &&sinks = sinks_;
- auto &&meta = msg->meta_;
+ auto &&sinks = sinks_;
+ auto &&meta = msg->meta_;
- active_->send([=] {
- for (auto &&sink : sinks) {
- sink.write(meta, asString);
- }
- });
+ active_->send([=] {
+ for (auto &&sink : sinks) {
+ sink.write(meta, asString);
+ }
+ });
+ }
}
void Logger::add(const LogSink &sink)
@@ -65,9 +87,14 @@ void Logger::clear()
Logger &Logger::instance()
{
- static Logger gLogger;
+ static Logger y_logger(LogLevel::INFO, "yage.log");
+
+ return y_logger;
+}
- return gLogger;
+void Logger::setLevel(LogLevel min_level)
+{
+ min_level_ = min_level;
}
} // namespace yage