diff --git a/include/spdlog/mdc.h b/include/spdlog/mdc.h new file mode 100644 index 00000000..3693ecdf --- /dev/null +++ b/include/spdlog/mdc.h @@ -0,0 +1,33 @@ +#pragma once + +#include + +namespace spdlog { + class mdc { + public: + using mdc_map_t = std::map; + + static void put(const std::string &key, const std::string &value) { + get_context()[key] = value; + } + + static std::string get(const std::string &key) { + auto &context = get_context(); + auto it = context.find(key); + if (it != context.end()) { + return it->second; + } + return ""; + } + + static void remove(const std::string &key) { get_context().erase(key); } + + static void clear() { get_context().clear(); } + + static mdc_map_t &get_context() { + static thread_local mdc_map_t context; + return context; + } + }; + +} // namespace spdlog \ No newline at end of file