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#ifndef SPDLOG_HEADER_ONLY
7 #include <spdlog/spdlog.h>
8#endif
9
10#include <spdlog/common.h>
11#include <spdlog/pattern_formatter.h>
12
13namespace spdlog {
14
15SPDLOG_INLINE void initialize_logger(std::shared_ptr<logger> logger) {
16 details::registry::instance().initialize_logger(new_logger: std::move(logger));
17}
18
19SPDLOG_INLINE std::shared_ptr<logger> get(const std::string &name) {
20 return details::registry::instance().get(logger_name: name);
21}
22
23SPDLOG_INLINE void set_formatter(std::unique_ptr<spdlog::formatter> formatter) {
24 details::registry::instance().set_formatter(std::move(formatter));
25}
26
27SPDLOG_INLINE void set_pattern(std::string pattern, pattern_time_type time_type) {
28 set_formatter(
29 std::unique_ptr<spdlog::formatter>(new pattern_formatter(std::move(pattern), time_type)));
30}
31
32SPDLOG_INLINE void enable_backtrace(size_t n_messages) {
33 details::registry::instance().enable_backtrace(n_messages);
34}
35
36SPDLOG_INLINE void disable_backtrace() { details::registry::instance().disable_backtrace(); }
37
38SPDLOG_INLINE void dump_backtrace() { default_logger_raw()->dump_backtrace(); }
39
40SPDLOG_INLINE level::level_enum get_level() { return default_logger_raw()->level(); }
41
42SPDLOG_INLINE bool should_log(level::level_enum log_level) {
43 return default_logger_raw()->should_log(msg_level: log_level);
44}
45
46SPDLOG_INLINE void set_level(level::level_enum log_level) {
47 details::registry::instance().set_level(log_level);
48}
49
50SPDLOG_INLINE void flush_on(level::level_enum log_level) {
51 details::registry::instance().flush_on(log_level);
52}
53
54SPDLOG_INLINE void set_error_handler(void (*handler)(const std::string &msg)) {
55 details::registry::instance().set_error_handler(handler);
56}
57
58SPDLOG_INLINE void register_logger(std::shared_ptr<logger> logger) {
59 details::registry::instance().register_logger(new_logger: std::move(logger));
60}
61
62SPDLOG_INLINE void apply_all(const std::function<void(std::shared_ptr<logger>)> &fun) {
63 details::registry::instance().apply_all(fun);
64}
65
66SPDLOG_INLINE void drop(const std::string &name) { details::registry::instance().drop(logger_name: name); }
67
68SPDLOG_INLINE void drop_all() { details::registry::instance().drop_all(); }
69
70SPDLOG_INLINE void shutdown() { details::registry::instance().shutdown(); }
71
72SPDLOG_INLINE void set_automatic_registration(bool automatic_registration) {
73 details::registry::instance().set_automatic_registration(automatic_registration);
74}
75
76SPDLOG_INLINE std::shared_ptr<spdlog::logger> default_logger() {
77 return details::registry::instance().default_logger();
78}
79
80SPDLOG_INLINE spdlog::logger *default_logger_raw() {
81 return details::registry::instance().get_default_raw();
82}
83
84SPDLOG_INLINE void set_default_logger(std::shared_ptr<spdlog::logger> default_logger) {
85 details::registry::instance().set_default_logger(std::move(default_logger));
86}
87
88SPDLOG_INLINE void apply_logger_env_levels(std::shared_ptr<logger> logger) {
89 details::registry::instance().apply_logger_env_levels(new_logger: std::move(logger));
90}
91
92} // namespace spdlog
93