spdlogは、作成したロガーのグローバルなレジストリを、プロセスごとに管理します。
目的は、ロガーを受け渡さなくても、プロジェクトのどこからでも簡単にアクセスできるようにすることです。
spdlog::get("logger1")->info("hello");
..
..
some other source file..
..
auto l = spdlog::get("logger1");
l->info("hello again");ロガーが見つからなければ、空の共有ポインターを返します。if(l) を使うと、ポインター l が有効かどうか確認できます。
新しいロガーの登録
通常、ロガーは自動的に登録されるため、登録する必要はありません。
手動で作成したロガー(spdlog.hのファクトリ関数で作成していないもの)を登録するには、register_logger(std::shared_ptr<logger>) 関数を使います。
spdlog::register_logger(some_logger);これにより、some_logger がその名前で登録されます。
レジストリでの衝突
レジストリに既に存在する名前で登録しようとすると、spdlogは spdlog::spdlog_ex 例外を送出します。
レジストリからのロガーの削除
"drop()"関数を使うと、ロガーをレジストリから削除できます。
そのロガーを指すほかのshared_ptrが存在しなければ、ロガーは閉じられ、すべてのリソースが解放されます。
spdlog::drop("logger_name");
//or remove them all
spdlog::drop_all()©gabime 2023-2024 spdlog. All Rights Reserved.