| 83 | } |
| 84 | |
| 85 | void LoggerConfiguration::initialize(const std::shared_ptr<LoggerProperties> &logger_properties) { |
| 86 | std::lock_guard<std::mutex> lock(mutex); |
| 87 | root_namespace_ = initialize_namespaces(logger_properties); |
| 88 | std::string spdlog_pattern; |
| 89 | if (!logger_properties->getString("spdlog.pattern", spdlog_pattern)) { |
| 90 | spdlog_pattern = spdlog_default_pattern; |
| 91 | } |
| 92 | |
| 93 | /** |
| 94 | * There is no need to shorten names per spdlog sink as this is a per log instance. |
| 95 | */ |
| 96 | std::string shorten_names_str; |
| 97 | if (logger_properties->getString("spdlog.shorten_names", shorten_names_str)) { |
| 98 | utils::StringUtils::StringToBool(shorten_names_str, shorten_names_); |
| 99 | } |
| 100 | |
| 101 | formatter_ = std::make_shared<spdlog::pattern_formatter>(spdlog_pattern); |
| 102 | std::map<std::string, std::shared_ptr<spdlog::logger>> spdloggers; |
| 103 | for (auto const & logger_impl : loggers) { |
| 104 | std::shared_ptr<spdlog::logger> spdlogger; |
| 105 | auto it = spdloggers.find(logger_impl->name); |
| 106 | if (it == spdloggers.end()) { |
| 107 | spdlogger = get_logger(logger_, root_namespace_, logger_impl->name, formatter_, true); |
| 108 | spdloggers[logger_impl->name] = spdlogger; |
| 109 | } else { |
| 110 | spdlogger = it->second; |
| 111 | } |
| 112 | logger_impl->set_delegate(spdlogger); |
| 113 | } |
| 114 | logger_->log_debug("Set following pattern on loggers: %s", spdlog_pattern); |
| 115 | } |
| 116 | |
| 117 | std::shared_ptr<Logger> LoggerConfiguration::getLogger(const std::string &name) { |
| 118 | std::lock_guard<std::mutex> lock(mutex); |
no test coverage detected