Merge branch 'v1.x' of https://github.com/gabime/spdlog into v1.x

This commit is contained in:
gabime
2018-11-11 01:19:13 +02:00
4 changed files with 38 additions and 9 deletions

View File

@@ -52,7 +52,7 @@ struct async_factory_impl
auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...);
auto new_logger = std::make_shared<async_logger>(std::move(logger_name), std::move(sink), std::move(tp), OverflowPolicy);
registry_inst.register_and_init(new_logger);
registry_inst.initialize_logger(new_logger);
return new_logger;
}
};

View File

@@ -47,13 +47,9 @@ public:
loggers_[logger_name] = std::move(new_logger);
}
void register_and_init(std::shared_ptr<logger> new_logger)
void initialize_logger(std::shared_ptr<logger> new_logger)
{
std::lock_guard<std::mutex> lock(logger_map_mutex_);
auto logger_name = new_logger->name();
throw_if_exists_(logger_name);
// set the global formatter pattern
new_logger->set_formatter(formatter_->clone());
if (err_handler_)
@@ -64,8 +60,11 @@ public:
new_logger->set_level(level_);
new_logger->flush_on(flush_level_);
// add to registry
loggers_[logger_name] = std::move(new_logger);
if (automatic_registration_)
{
throw_if_exists_(new_logger->name());
loggers_[new_logger->name()] = std::move(new_logger);
}
}
std::shared_ptr<logger> get(const std::string &logger_name)
@@ -223,6 +222,12 @@ public:
return tp_mutex_;
}
void set_automatic_registration(bool automatic_regsistration)
{
std::lock_guard<std::mutex> lock(logger_map_mutex_);
automatic_registration_ = automatic_regsistration;
}
static registry &instance()
{
static registry s_instance;
@@ -269,6 +274,7 @@ private:
std::shared_ptr<thread_pool> tp_;
std::unique_ptr<periodic_worker> periodic_flusher_;
std::shared_ptr<logger> default_logger_;
bool automatic_registration_ = true;
};
} // namespace details

View File

@@ -29,7 +29,7 @@ struct synchronous_factory
{
auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...);
auto new_logger = std::make_shared<logger>(std::move(logger_name), std::move(sink));
details::registry::instance().register_and_init(new_logger);
details::registry::instance().initialize_logger(new_logger);
return new_logger;
}
};
@@ -125,6 +125,12 @@ inline void shutdown()
details::registry::instance().shutdown();
}
// Automatic registration of loggers when using spdlog::create() or spdlog::create_async
inline void set_automatic_registration(bool automatic_registation)
{
details::registry::instance().set_automatic_registration(automatic_registation);
}
// API for using default logger (stdout_color_mt),
// e.g: spdlog::info("Message {}", 1);
//