Commit f95b189f authored by Pablo Arias's avatar Pablo Arias

Added a global option in tweakme.h that disabled global registration of

loggers. fixes #712
parent 1aace95c
...@@ -52,7 +52,10 @@ struct async_factory_impl ...@@ -52,7 +52,10 @@ struct async_factory_impl
auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...); 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); 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.init_with_global_defaults(new_logger);
#ifndef SPDLOG_DISABLE_GLOBAL_REGISTRATION
registry_inst.register_logger(new_logger);
#endif
return new_logger; return new_logger;
} }
}; };
......
...@@ -47,13 +47,8 @@ public: ...@@ -47,13 +47,8 @@ public:
loggers_[logger_name] = std::move(new_logger); loggers_[logger_name] = std::move(new_logger);
} }
void register_and_init(std::shared_ptr<logger> new_logger) void init_with_global_defaults(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()); new_logger->set_formatter(formatter_->clone());
if (err_handler_) if (err_handler_)
...@@ -63,9 +58,6 @@ public: ...@@ -63,9 +58,6 @@ public:
new_logger->set_level(level_); new_logger->set_level(level_);
new_logger->flush_on(flush_level_); new_logger->flush_on(flush_level_);
// add to registry
loggers_[logger_name] = std::move(new_logger);
} }
std::shared_ptr<logger> get(const std::string &logger_name) std::shared_ptr<logger> get(const std::string &logger_name)
......
...@@ -29,7 +29,10 @@ struct synchronous_factory ...@@ -29,7 +29,10 @@ struct synchronous_factory
{ {
auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...); auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...);
auto new_logger = std::make_shared<logger>(std::move(logger_name), std::move(sink)); 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().init_with_global_defaults(new_logger);
#ifndef SPDLOG_DISABLE_GLOBAL_REGISTRATION
details::registry::instance().register_logger(new_logger);
#endif
return new_logger; return new_logger;
} }
}; };
......
...@@ -128,3 +128,11 @@ ...@@ -128,3 +128,11 @@
// //
// #define SPDLOG_DISABLE_DEFAULT_LOGGER // #define SPDLOG_DISABLE_DEFAULT_LOGGER
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// Uncomment to disable global logger registration
// This is useful if you don't need loggers to be globally accessible and part of the global registry.
// This option will allow you to use the same name for different loggers.
//
// #define SPDLOG_DISABLE_GLOBAL_REGISTRATION
///////////////////////////////////////////////////////////////////////////////
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment