21#ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT
23#error SPDLOG_WCHAR_TO_UTF8_SUPPORT only supported on windows
30#ifndef SPDLOG_NO_EXCEPTIONS
31#define SPDLOG_LOGGER_CATCH(location) \
32 catch (const std::exception& ex) \
34 if (location.filename) \
36 err_handler_(fmt_lib::format(SPDLOG_FMT_STRING("{} [{}({})]"), ex.what(), location.filename, location.line)); \
40 err_handler_(ex.what()); \
45 err_handler_("Rethrowing unknown exception in logger"); \
49#define SPDLOG_LOGGER_CATCH(location)
60 : name_(
std::move(
name)), sinks_()
65 template <
typename It>
67 : name_(
std::move(
name)), sinks_(begin, end)
90 template <
typename... Args>
93 log_(loc, lvl, details::to_string_view(
fmt), std::forward<Args>(args)...);
96 template <
typename... Args>
102 template <
typename T>
109 template <class T, typename std::enable_if<!is_convertible_to_any_format_string<const T&>::value,
int>
::type = 0>
112 log(loc, lvl,
"{}", msg);
118 bool traceback_enabled = tracer_.enabled();
119 if (!log_enabled && !traceback_enabled)
125 log_it_(log_msg, log_enabled, traceback_enabled);
131 bool traceback_enabled = tracer_.enabled();
132 if (!log_enabled && !traceback_enabled)
138 log_it_(log_msg, log_enabled, traceback_enabled);
146 template <
typename... Args>
149 log(level::trace,
fmt, std::forward<Args>(args)...);
152 template <
typename... Args>
155 log(level::debug,
fmt, std::forward<Args>(args)...);
158 template <
typename... Args>
161 log(level::info,
fmt, std::forward<Args>(args)...);
164 template <
typename... Args>
167 log(level::warn,
fmt, std::forward<Args>(args)...);
170 template <
typename... Args>
173 log(level::err,
fmt, std::forward<Args>(args)...);
176 template <
typename... Args>
179 log(level::critical,
fmt, std::forward<Args>(args)...);
182#ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT
183 template <
typename... Args>
186 log_(loc, lvl, details::to_string_view(
fmt), std::forward<Args>(args)...);
189 template <
typename... Args>
190 void log(level::level_enum lvl, wformat_string_t<Args...>
fmt, Args&&... args)
192 log(source_loc{}, lvl,
fmt, std::forward<Args>(args)...);
195 void log(log_clock::time_point log_time, source_loc loc, level::level_enum lvl, wstring_view_t msg)
198 bool traceback_enabled = tracer_.enabled();
199 if (!log_enabled && !traceback_enabled)
205 details::os::wstr_to_utf8buf(wstring_view_t(msg.data(), msg.size()), buf);
206 details::log_msg log_msg(log_time, loc, name_, lvl,
string_view_t(buf.data(), buf.size()));
207 log_it_(log_msg, log_enabled, traceback_enabled);
210 void log(source_loc loc, level::level_enum lvl, wstring_view_t msg)
213 bool traceback_enabled = tracer_.enabled();
214 if (!log_enabled && !traceback_enabled)
220 details::os::wstr_to_utf8buf(wstring_view_t(msg.data(), msg.size()), buf);
221 details::log_msg log_msg(loc, name_, lvl,
string_view_t(buf.data(), buf.size()));
222 log_it_(log_msg, log_enabled, traceback_enabled);
225 void log(level::level_enum lvl, wstring_view_t msg)
227 log(source_loc{}, lvl, msg);
230 template <
typename... Args>
231 void trace(wformat_string_t<Args...>
fmt, Args&&... args)
233 log(level::trace,
fmt, std::forward<Args>(args)...);
236 template <
typename... Args>
237 void debug(wformat_string_t<Args...>
fmt, Args&&... args)
239 log(level::debug,
fmt, std::forward<Args>(args)...);
242 template <
typename... Args>
243 void info(wformat_string_t<Args...>
fmt, Args&&... args)
245 log(level::info,
fmt, std::forward<Args>(args)...);
248 template <
typename... Args>
249 void warn(wformat_string_t<Args...>
fmt, Args&&... args)
251 log(level::warn,
fmt, std::forward<Args>(args)...);
254 template <
typename... Args>
255 void error(wformat_string_t<Args...>
fmt, Args&&... args)
257 log(level::err,
fmt, std::forward<Args>(args)...);
260 template <
typename... Args>
261 void critical(wformat_string_t<Args...>
fmt, Args&&... args)
263 log(level::critical,
fmt, std::forward<Args>(args)...);
267 template <
typename T>
270 log(level::trace, msg);
273 template <
typename T>
276 log(level::debug, msg);
279 template <
typename T>
282 log(level::info, msg);
285 template <
typename T>
288 log(level::warn, msg);
291 template <
typename T>
294 log(level::err, msg);
297 template <
typename T>
300 log(level::critical, msg);
306 return msg_level >= level_.load(std::memory_order_relaxed);
312 return tracer_.enabled();
319 const std::string&
name()
const;
343 const std::vector<sink_ptr>& sinks()
const;
345 std::vector<sink_ptr>& sinks();
351 virtual std::shared_ptr<logger> clone(std::string logger_name);
362 template <
typename... Args>
366 bool traceback_enabled = tracer_.
enabled();
367 if (!log_enabled && !traceback_enabled)
374#ifdef SPDLOG_USE_STD_FORMAT
375 fmt_lib::vformat_to(std::back_inserter(buf),
fmt, fmt_lib::make_format_args(std::forward<Args>(args)...));
377 fmt::vformat_to(fmt::appender(buf),
fmt, fmt::make_format_args(std::forward<Args>(args)...));
381 log_it_(log_msg, log_enabled, traceback_enabled);
386#ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT
387 template <
typename... Args>
391 bool traceback_enabled = tracer_.
enabled();
392 if (!log_enabled && !traceback_enabled)
401 std::back_inserter(wbuf),
fmt, fmt_lib::make_format_args<fmt_lib::wformat_context>(std::forward<Args>(args)...));
404 details::os::wstr_to_utf8buf(wstring_view_t(wbuf.data(), wbuf.size()), buf);
405 details::log_msg log_msg(loc, name_, lvl, string_view_t(buf.data(), buf.size()));
406 log_it_(log_msg, log_enabled, traceback_enabled);
414 void log_it_(
const details::log_msg& log_msg,
bool log_enabled,
bool traceback_enabled);
415 virtual void sink_it_(
const details::log_msg& msg);
416 virtual void flush_();
417 void dump_backtrace_();
418 bool should_flush_(
const details::log_msg& msg);
422 void err_handler_(
const std::string& msg);
425 void swap(logger&
a, logger&
b);
429#ifdef SPDLOG_HEADER_ONLY
Definition backtracer.h:21
bool enabled() const
Definition backtracer-inl.h:48
void log(source_loc loc, level::level_enum lvl, const T &msg)
Definition logger.h:110
bool should_backtrace() const
Definition logger.h:310
void warn(format_string_t< Args... > fmt, Args &&... args)
Definition logger.h:165
void log(level::level_enum lvl, const T &msg)
Definition logger.h:103
void info(const T &msg)
Definition logger.h:280
void log(level::level_enum lvl, format_string_t< Args... > fmt, Args &&... args)
Definition logger.h:97
void log(log_clock::time_point log_time, source_loc loc, level::level_enum lvl, string_view_t msg)
Definition logger.h:115
std::vector< sink_ptr > sinks_
Definition logger.h:355
void trace(format_string_t< Args... > fmt, Args &&... args)
Definition logger.h:147
void critical(const T &msg)
Definition logger.h:298
logger(std::string name, It begin, It end)
Definition logger.h:66
logger(std::string name)
Definition logger.h:59
logger(std::string name, sink_ptr single_sink)
Definition logger.h:72
virtual ~logger()=default
void trace(const T &msg)
Definition logger.h:268
std::string name_
Definition logger.h:354
void error(format_string_t< Args... > fmt, Args &&... args)
Definition logger.h:171
bool should_log(level::level_enum msg_level) const
Definition logger.h:304
void critical(format_string_t< Args... > fmt, Args &&... args)
Definition logger.h:177
void error(const T &msg)
Definition logger.h:292
details::backtracer tracer_
Definition logger.h:359
void log(source_loc loc, level::level_enum lvl, format_string_t< Args... > fmt, Args &&... args)
Definition logger.h:91
void info(format_string_t< Args... > fmt, Args &&... args)
Definition logger.h:159
void log_(source_loc loc, level::level_enum lvl, string_view_t fmt, Args &&... args)
Definition logger.h:363
void debug(const T &msg)
Definition logger.h:274
void debug(format_string_t< Args... > fmt, Args &&... args)
Definition logger.h:153
void log(level::level_enum lvl, string_view_t msg)
Definition logger.h:141
void log(source_loc loc, level::level_enum lvl, string_view_t msg)
Definition logger.h:128
logger(std::string name, sinks_init_list sinks)
Definition logger.h:78
void warn(const T &msg)
Definition logger.h:286
#define SPDLOG_NOEXCEPT
Definition common.h:69
#define SPDLOG_TRY
Definition common.h:107
#define SPDLOG_API
Definition common.h:45
type
Definition core.h:681
#define SPDLOG_LOGGER_CATCH(location)
Definition logger.h:31
@ error
Definition format.h:3062
Definition bin_to_hex.h:111
level_enum
Definition common.h:233
@ critical
Definition common.h:239
@ warn
Definition common.h:237
@ info
Definition common.h:236
@ trace
Definition common.h:234
SPDLOG_INLINE void disable_backtrace()
Definition spdlog-inl.h:41
std::function< void(const std::string &err_msg)> err_handler
Definition common.h:138
fmt::format_string< Args... > format_string_t
Definition common.h:176
SPDLOG_INLINE void set_level(level::level_enum log_level)
Definition spdlog-inl.h:61
std::shared_ptr< sinks::sink > sink_ptr
Definition common.h:136
SPDLOG_INLINE void enable_backtrace(size_t n_messages)
Definition spdlog-inl.h:36
SPDLOG_INLINE void swap(logger &a, logger &b)
Definition logger-inl.h:60
SPDLOG_INLINE void set_error_handler(void(*handler)(const std::string &msg))
Definition spdlog-inl.h:71
SPDLOG_INLINE void dump_backtrace()
Definition spdlog-inl.h:46
std::atomic< int > level_t
Definition common.h:214
std::initializer_list< sink_ptr > sinks_init_list
Definition common.h:137
fmt::basic_string_view< char > string_view_t
Definition common.h:172
void log(source_loc source, level::level_enum lvl, format_string_t< Args... > fmt, Args &&... args)
Definition spdlog.h:145
SPDLOG_INLINE void flush_on(level::level_enum log_level)
Definition spdlog-inl.h:66
SPDLOG_INLINE void set_formatter(std::unique_ptr< spdlog::formatter > formatter)
Definition spdlog-inl.h:26
pattern_time_type
Definition common.h:289
SPDLOG_INLINE bool should_log(level::level_enum log_level)
Definition spdlog-inl.h:56
SPDLOG_INLINE void set_pattern(std::string pattern, pattern_time_type time_type)
Definition spdlog-inl.h:31
fmt::basic_memory_buffer< char, 250 > memory_buf_t
Definition common.h:173
b
Definition tag_strings.h:61
a
Definition tag_strings.h:43