1 // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2 // Distributed under the MIT License (http://opensource.org/licenses/MIT)
3 
4 #pragma once
5 
6 #include "registry.h"
7 
8 namespace spdlog {
9 
10 // Default logger factory-  creates synchronous loggers
11 class logger;
12 
13 struct synchronous_factory
14 {
15     template<typename Sink, typename... SinkArgs>
createsynchronous_factory16     static std::shared_ptr<spdlog::logger> create(std::string logger_name, SinkArgs &&...args)
17     {
18         auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...);
19         auto new_logger = std::make_shared<spdlog::logger>(std::move(logger_name), std::move(sink));
20         details::registry::instance().initialize_logger(new_logger);
21         return new_logger;
22     }
23 };
24 } // namespace spdlog
25