このページの内容

スレッドセーフではない関数

次の関数を、複数のスレッドから同じロガーオブジェクトに対して同時に呼び出してはいけません。

  • set_error_handler(log_err_handler);
  • logger::sinks() — スレッドセーフではないvectorへの参照を返すため、同時に変更しないでください(例:logger->sinks().push_back(new_sink);)。

注意:この制限は、すべての種類のロガー("_mt"または"_st")に適用されます。

ロガー

スレッドセーフなロガーを作成するには、_mtファクトリ関数を使います。

例:

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

シングルスレッドのロガーを作成するには、_stファクトリ関数を使います。

例:

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

sink

  • スレッドセーフなsink: 名前が _mt で終わるsink(例:daily_file_sink_mt)。
  • スレッドセーフではないsink: 名前が _st で終わるsink(例:daily_file_sink_st)。