問題タブ [spdlog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
21571 参照

c++ - spdlog を使用したライブラリからのロギング

Windows のライブラリを含むプロジェクトでspdlogを使用しようとしています。2 つのロガーを作成します。ライブラリを使用するアプリ用に 1 つ、ライブラリ自体用に 1 つ。ライブラリのロガーはアプリから作成されますが、ライブラリがメッセージを追加しようとするとクラッシュします。

以下は簡単な例です。

図書館

libclass.h

libclass.cpp

アプリケーション

main.cpp

0 投票する
3 に答える
11870 参照

c++ - cmake インクルード ヘッダーのみのライブラリ

プロジェクトの 1 つにspdlogを含めたいと考えています。ヘッダーのみのライブラリです。私が構築しているプロジェクトはcmakeを使用しています。現在私は使用しています

cmakeで、ライブラリを次のように含めます

ロガーフォルダー内のlogs.hにあります。そのようなファイルやディレクトリがないという致命的なエラーが発生しています。アプリケーションに同じライブラリを含める正しい方法は何ですか?

0 投票する
1 に答える
622 参照

pid - spdlog を使用して pid (プロセス ID) をログに記録する方法

spdlog次のようにしてログに記録できますthreadid

spdlog::set_pattern("*** [%H:%M:%S %z] [thread %t] %v ***");

しかし、どうすればログに記録できますpid(process id)か?

0 投票する
1 に答える
682 参照

c++ - 別のライブラリのテンプレートに一致する 1 つのライブラリの関数

私は 2 つの異なるライブラリを使用する C++ プロジェクトに取り組んでいます。ロギング用のspdlogと、オブジェクトをバイトにシリアル化するためのmutils-serialization (ネットワーク経由で送信するため)。どちらのライブラリも名前空間を適切に使用していますが、両方を同時に使用するプログラムを作成しようとすると、コンパイラ (g++ 6.2) が無意味なエラーを表示し、spdlog ライブラリから関数テンプレートをインスタンス化しようとしていることを示しているようです。 mutils ライブラリの関数テンプレートの定義を使用します。

これが私の簡単なテストプログラムです:

TestSerializableObjectmutils::ByteRepresentable(シリアライゼーションを有効にして mutils-serialization ライブラリをプルするインターフェイス)を実装し、 operator<<(spdlog がログに記録できるようにするために必要な) を提供する単純なクラスです。必要に応じてコードを投稿できます。

これを でコンパイルするとg++ -std=c++14 -I"./src" -I"./libraries" -I"./libraries/mutils/" -L"./libraries/" -O0 -g3 -Wall "src/LibraryCollisionTest.cpp"、長くて醜いエラーが表示されます (心配しないでください。解析のお手伝いをします)。

キーラインは次のとおりです。

どういうわけか、g++ は、名前空間内の spdlog ライブラリ内のテンプレート化された関数の展開から、名前空間内の mutils ライブラリ内のfmt::internal関数テンプレートにジャンプしましたmutils。これは、明らかに spdlog ライブラリが意図したものではありません! の1276 行を見るとformat.h、このテンプレート構造体の中で "convert" 関数を呼び出す行です。

上記の数行は、確かに、関数「変換」です。

これらはすべて namespace 内fmt::internalにあり、私の IDE は、1276 行目の関数「convert」の定義が必要な場合は、1248 行目の関数「convert」にジャンプする必要があることに同意します。では、なぜ g++ はこの定義を無視し、代わりにmutils::convert()正しい名前空間にさえないの定義を使用してみてください。

clang もこのプログラムのコンパイルに失敗し、同じ間違いを犯すことに注意してください。したがって、これは g++ のバグではないと思います。

0 投票する
2 に答える
852 参照

c++ - C++ SPDLOG コンパイル エラー: 変数またはフィールド 'set_error_handler' が void と宣言されました

プロジェクトで spdlog を使用しようとしています。spdlog docuによると 、 include フォルダーの下にファイルをコピーして、C++ 11 コンパイラーを使用するだけです。

/include/spdlog フォルダーをプロジェクトのルート フォルダーにコピーしましたが、プロジェクトをビルドしようとすると多くのエラーが発生します。いくつかはffです:

CMakeLists.txt に以下を追加しようとしました

(libspdlog-devをインストールしました)

しかし、上記のいずれも機能しません。これを修正する方法を知っている人はいますか?どうもありがとう!