gusenov / examples-spdlog

Примеры логирования с помощью C++ библиотеки spdlog.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

spdlog - header only библиотека. Предоставляет python like formatting API используя идущий в комплекте fmt lib (см. reference). spdlog использует подход "include what you need" - в коде следует подключать только фактически используемые фичи.

Thread Safety

Для создания thread safe логгеров используются _mt фабричные функции:

  • auto logger = spdlog::basic_logger_mt(...);

Для создания single threaded логгеров используются _st фабричные функции:

  • auto logger = spdlog::basic_logger_st(...);

Каждый логгер содержит vector из одного или нескольких std::shared_ptr<spdlog::sink>. На каждом log call (если log level правильный) logger на каждом из них вызывает функцию sink(log_msg). Суффиксы sink'ов говорят об их thread safety:

  • _mt (multi threaded) - могут использоваться одновременно из множества потоков.
    • daily_file_sink_mt
  • _st (single threaded) - быстрее потому что нет блокировок.
    • daily_file_sink_st

Следующие функции не могут быть вызваны concurrently из множества потоков на одном и том же logger объекте:

  • set_error_handler(log_err_handler);
  • logger::sinks() - возвращает reference на non thread safe vector, поэтому нельзя его модифицировать concurrently
    • например, logger->sinks().push_back(new_sink);

Эти ограничения применимы ко всем видам логгеров (_mt или _st).

Sinks

Начиная с версии 1.5.0, spdlog при необходимости создает папки содержащие log файлы. Ранее папки нужно было создавать вручную.

#include "spdlog/sinks/.h" spdlog::sinks:: spdlog::
ansicolor_sink ansicolor_stdout_sink_st
ansicolor_sink ansicolor_stdout_sink_mt
ansicolor_sink ansicolor_stderr_sink_st
ansicolor_sink ansicolor_stderr_sink_mt
stdout_color_sinks stdout_color_sink_st stdout_color_st
stdout_color_sinks stdout_color_sink_mt stdout_color_mt
stdout_color_sinks stderr_color_sink_st stderr_color_st
stdout_color_sinks stderr_color_sink_mt stderr_color_mt
stdout_sinks stdout_sink_st stdout_logger_st
stdout_sinks stdout_sink_mt stdout_logger_mt
stdout_sinks stderr_sink_st stderr_logger_st
stdout_sinks stderr_sink_mt stderr_logger_mt
basic_file_sink basic_file_sink_st basic_logger_st
basic_file_sink basic_file_sink_mt basic_logger_mt
rotating_file_sink rotating_file_sink_st rotating_logger_st
rotating_file_sink rotating_file_sink_mt rotating_logger_mt
daily_file_sink daily_file_sink_st daily_logger_st
daily_file_sink daily_file_sink_mt daily_logger_mt
daily_file_sink daily_file_format_sink_st daily_logger_format_st
daily_file_sink daily_file_format_sink_mt daily_logger_format_mt
hourly_file_sink hourly_file_sink_st hourly_logger_st
hourly_file_sink hourly_file_sink_mt hourly_logger_mt
ostream_sink ostream_sink_st
ostream_sink ostream_sink_mt
dist_sink dist_sink_st
dist_sink dist_sink_mt
dup_filter_sink dup_filter_sink_st
dup_filter_sink dup_filter_sink_mt
ringbuffer_sink ringbuffer_sink_st
ringbuffer_sink ringbuffer_sink_mt
syslog_sink syslog_sink_st syslog_logger_st
syslog_sink syslog_sink_mt syslog_logger_mt
tcp_sink tcp_sink_st
tcp_sink tcp_sink_mt
udp_sink udp_sink_st
udp_sink udp_sink_mt udp_logger_mt
null_sink null_sink_st null_logger_st
null_sink null_sink_mt null_logger_mt

Usage samples

About

Примеры логирования с помощью C++ библиотеки spdlog.


Languages

Language:C++ 99.0%Language:C 0.6%Language:Makefile 0.2%Language:CMake 0.1%Language:Shell 0.1%