spdlogは、ログの記録中に例外を送出しません(39cdd08以降)。

ロガーやsinkの構築中は、エラーが致命的と見なされるため、例外を送出する可能性があります。

ログの記録中にエラーが発生すると、ライブラリはstderrへエラーメッセージを表示します。画面がエラーメッセージで埋まるのを避けるため、ロガーごとに毎分1メッセージに制限しています。

この動作は、spdlog::set_error_handler(new_handler_fun) または logger->set_error_handler(new_handler_fun) の呼び出しで変更できます。

エラーハンドラーをグローバルに変更する:

    spdlog::set_error_handler([](const std::string& msg) {
        std::cerr << "my err handler: " << msg << std::endl;
    });

特定のロガーについて変更する:

    critical_logger->set_error_handler([](const std::string& msg) {
        throw std::runtime_error(msg);
    });

デフォルトのエラーハンドラー

_default_err_handler は、次を使ってエラーを表示します。

    fmt::print(stderr, "[*** LOG ERROR ***] [{}] [{}] {}\n", date_buf, name(), msg);