Added a global option in tweakme.h that disabled global registration of
loggers. fixes #712
This commit is contained in:
		@@ -52,7 +52,10 @@ 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.init_with_global_defaults(new_logger);
 | 
			
		||||
#ifndef SPDLOG_DISABLE_GLOBAL_REGISTRATION
 | 
			
		||||
        registry_inst.register_logger(new_logger);
 | 
			
		||||
#endif
 | 
			
		||||
        return new_logger;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -47,13 +47,8 @@ public:
 | 
			
		||||
        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());
 | 
			
		||||
 | 
			
		||||
        if (err_handler_)
 | 
			
		||||
@@ -63,9 +58,6 @@ public:
 | 
			
		||||
 | 
			
		||||
        new_logger->set_level(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)
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,10 @@ 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().init_with_global_defaults(new_logger);
 | 
			
		||||
#ifndef SPDLOG_DISABLE_GLOBAL_REGISTRATION
 | 
			
		||||
        details::registry::instance().register_logger(new_logger);
 | 
			
		||||
#endif
 | 
			
		||||
        return new_logger;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -128,3 +128,11 @@
 | 
			
		||||
//
 | 
			
		||||
// #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
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user