6#ifndef SPDLOG_HEADER_ONLY
21 : name_(other.name_), sinks_(other.sinks_), level_(other.level_.load(
std::memory_order_relaxed)), flush_level_(other.flush_level_.load(
std::memory_order_relaxed)), custom_err_handler_(other.custom_err_handler_), tracer_(other.tracer_)
26 sinks_(std::move(other.sinks_)),
27 level_(other.level_.load(std::memory_order_relaxed)),
28 flush_level_(other.flush_level_.load(std::memory_order_relaxed)),
29 custom_err_handler_(std::move(other.custom_err_handler_)),
30 tracer_(std::move(other.tracer_))
43 name_.swap(other.name_);
44 sinks_.swap(other.sinks_);
47 auto other_level = other.level_.load();
48 auto my_level = level_.exchange(other_level);
49 other.level_.store(my_level);
52 other_level = other.flush_level_.load();
53 my_level = flush_level_.exchange(other_level);
54 other.flush_level_.store(my_level);
56 custom_err_handler_.swap(other.custom_err_handler_);
57 std::swap(tracer_, other.tracer_);
86 if (std::next(it) ==
sinks_.end())
89 (*it)->set_formatter(std::move(f));
94 (*it)->set_formatter(f->clone());
101 auto new_formatter = details::make_unique<pattern_formatter>(std::move(pattern), time_type);
158 auto cloned = std::make_shared<logger>(*
this);
159 cloned->name_ = std::move(logger_name);
170 if (traceback_enabled)
180 if (sink->should_log(msg.
level))
233 using std::chrono::system_clock;
234 static std::mutex mutex;
235 static std::chrono::system_clock::time_point last_report_time;
236 static size_t err_counter = 0;
237 std::lock_guard<std::mutex> lk{mutex};
238 auto now = system_clock::now();
240 if (now - last_report_time < std::chrono::seconds(1))
244 last_report_time = now;
247 std::strftime(date_buf,
sizeof(date_buf),
"%Y-%m-%d %H:%M:%S", &tm_time);
248#if defined(USING_R) && defined(R_R_H)
249 REprintf(
"[*** LOG ERROR #%04zu ***] [%s] [%s] {%s}\n", err_counter, date_buf,
name().c_str(), msg.c_str());
251 std::fprintf(stderr,
"[*** LOG ERROR #%04zu ***] [%s] [%s] {%s}\n", err_counter, date_buf,
name().c_str(), msg.c_str());
void disable()
Definition backtracer-inl.h:42
void push_back(const log_msg &msg)
Definition backtracer-inl.h:53
bool enabled() const
Definition backtracer-inl.h:48
void enable(size_t size)
Definition backtracer-inl.h:35
bool empty() const
Definition backtracer-inl.h:59
void foreach_pop(std::function< void(const details::log_msg &)> fun)
Definition backtracer-inl.h:66
level::level_enum level() const
Definition logger-inl.h:70
void set_formatter(std::unique_ptr< formatter > f)
Definition logger-inl.h:82
void set_pattern(std::string pattern, pattern_time_type time_type=pattern_time_type::local)
Definition logger-inl.h:99
std::vector< sink_ptr > sinks_
Definition logger.h:355
err_handler custom_err_handler_
Definition logger.h:358
virtual void flush_()
Definition logger-inl.h:196
logger(std::string name)
Definition logger.h:59
level::level_enum flush_level() const
Definition logger-inl.h:133
void flush_on(level::level_enum log_level)
Definition logger-inl.h:128
spdlog::level_t flush_level_
Definition logger.h:357
void err_handler_(const std::string &msg)
Definition logger-inl.h:225
const std::vector< sink_ptr > & sinks() const
Definition logger-inl.h:139
std::string name_
Definition logger.h:354
void enable_backtrace(size_t n_messages)
Definition logger-inl.h:106
virtual void sink_it_(const details::log_msg &msg)
Definition logger-inl.h:176
virtual std::shared_ptr< logger > clone(std::string logger_name)
Definition logger-inl.h:156
details::backtracer tracer_
Definition logger.h:359
const std::string & name() const
Definition logger-inl.h:75
void set_error_handler(err_handler)
Definition logger-inl.h:150
logger & operator=(logger other) SPDLOG_NOEXCEPT
Definition logger-inl.h:35
bool should_flush_(const details::log_msg &msg)
Definition logger-inl.h:219
void dump_backtrace()
Definition logger-inl.h:117
void swap(spdlog::logger &other) SPDLOG_NOEXCEPT
Definition logger-inl.h:41
void flush()
Definition logger-inl.h:123
void set_level(level::level_enum log_level)
Definition logger-inl.h:65
void dump_backtrace_()
Definition logger-inl.h:208
spdlog::level_t level_
Definition logger.h:356
void disable_backtrace()
Definition logger-inl.h:112
void log_it_(const details::log_msg &log_msg, bool log_enabled, bool traceback_enabled)
Definition logger-inl.h:164
#define SPDLOG_NOEXCEPT
Definition common.h:69
#define SPDLOG_TRY
Definition common.h:107
#define SPDLOG_INLINE
Definition common.h:47
#define SPDLOG_LOGGER_CATCH(location)
Definition logger.h:31
SPDLOG_INLINE std::tm localtime() SPDLOG_NOEXCEPT
Definition os-inl.h:102
level_enum
Definition common.h:233
@ info
Definition common.h:236
@ off
Definition common.h:240
std::function< void(const std::string &err_msg)> err_handler
Definition common.h:138
SPDLOG_INLINE void swap(logger &a, logger &b)
Definition logger-inl.h:60
pattern_time_type
Definition common.h:289
level::level_enum level
Definition log_msg.h:23
source_loc source
Definition log_msg.h:31
b
Definition tag_strings.h:61
a
Definition tag_strings.h:43