36 spdlog::critical(
"Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}", 42);
38 spdlog::info(
"Positional args are {1} {0}..",
"too",
"supported");
39 spdlog::info(
"{:>8} aligned, {:<8} aligned",
"right",
"left");
57 for (
int i = 0; i < 100; i++)
147 auto async_file = spdlog::basic_logger_mt<spdlog::async_factory>(
"async_file_logger",
"logs/async_log.txt");
151 for (
int i = 1; i < 101; ++i)
153 async_file->info(
"Async message #{}", i);
170 for (
int i = 0; i < 80; i++)
172 buf.
push_back(
static_cast<char>(i & 0xff));
213 console_sink->set_pattern(
"[multi_sink_example] [%^%l%$] %v");
220 logger.warn(
"this should appear in both console and file");
221 logger.info(
"this message should not appear in the console, only in the file");
228 template<
typename OStream>
231 return os <<
"[my_type i=" << c.
i <<
"]";
254 syslog_logger->warn(
"This is warning that will end up in syslog.");
259#if defined(__ANDROID__)
261void android_example()
264 auto android_logger = spdlog::android_logger_mt(
"android", tag);
265 android_logger->critical(
"Use \"adb shell logcat\" to view this message.");
283 return spdlog::details::make_unique<my_formatter_flag>();
291 auto formatter = make_unique<spdlog::pattern_formatter>();
void set_level(level::level_enum log_level)
const char * what() const SPDLOG_NOEXCEPT override
void stdout_logger_example()
void user_defined_example()
void load_levels_example()
void custom_flags_example()
void multi_sink_example()
void err_handler_example()
std::unique_ptr< T > make_unique(Args &&...args)
SPDLOG_INLINE void flush_every(std::chrono::seconds interval)
std::shared_ptr< logger > syslog_logger_mt(const std::string &logger_name, const std::string &syslog_ident="", int syslog_option=0, int syslog_facility=LOG_USER, bool enable_formatting=false)
void critical(fmt::format_string< Args... > fmt, Args &&...args)
SPDLOG_INLINE std::shared_ptr< logger > get(const std::string &name)
void warn(fmt::format_string< Args... > fmt, Args &&...args)
SPDLOG_INLINE std::shared_ptr< logger > stdout_color_mt(const std::string &logger_name, color_mode mode)
SPDLOG_INLINE void set_level(level::level_enum log_level)
SPDLOG_INLINE void enable_backtrace(size_t n_messages)
SPDLOG_INLINE void shutdown()
SPDLOG_INLINE void set_error_handler(void(*handler)(const std::string &msg))
SPDLOG_INLINE void dump_backtrace()
void info(fmt::format_string< Args... > fmt, Args &&...args)
std::shared_ptr< logger > basic_logger_mt(const std::string &logger_name, const filename_t &filename, bool truncate=false)
details::dump_info< typename Container::const_iterator > to_hex(const Container &container, size_t size_per_line=32)
SPDLOG_INLINE void set_formatter(std::unique_ptr< spdlog::formatter > formatter)
SPDLOG_INLINE void apply_all(const std::function< void(std::shared_ptr< logger >)> &fun)
std::shared_ptr< logger > rotating_logger_mt(const std::string &logger_name, const filename_t &filename, size_t max_file_size, size_t max_files, bool rotate_on_open=false)
SPDLOG_INLINE void set_pattern(std::string pattern, pattern_time_type time_type)
std::shared_ptr< logger > daily_logger_mt(const std::string &logger_name, const filename_t &filename, int hour=0, int minute=0, bool truncate=false, uint16_t max_files=0)
fmt::basic_memory_buffer< char, 250 > memory_buf_t
void debug(fmt::format_string< Args... > fmt, Args &&...args)
auto printf(const S &fmt, const T &... args) -> int
#define SPDLOG_DEBUG(...)
#define SPDLOG_TRACE(...)
#define SPDLOG_LOGGER_TRACE(logger,...)
friend OStream & operator<<(OStream &os, const my_type &c)