問題タブ [boost-log]
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.
windows - boost.log のインストール (コードブロック 12.11+gcc 4.7.1 を使用する Windows 7)
CodeBlocks 12.11 で Boost.Log ライブラリをビルドして実行しようとしています。私はboostとboost.logの経験がなく、それを学びたいので、最初にインストールする必要があります。
ブーストの取り付け
まず、コードブロックを使用してブーストをインストールする方法の手順に従いました
その結果、2 台の異なるコンピューター (どちらも Windows 7 を搭載) で、%mypath%\boost\lib に異なるファイルのリストを取得しました (1 つのコンピューターでは 6 つのファイルしかなく、別の 52 ではファイルがありました)。
より大きなリストは次のとおりです。
- libboost_chrono-mgw47-mt-1_52.a
- libboost_chrono-mgw47-mt-d-1_52.a
- libboost_date_time-mgw47-mt-1_52.a
- libboost_date_time-mgw47-mt-d-1_52.a
- libboost_exception-mgw47-mt-1_52.a
- libboost_exception-mgw47-mt-d-1_52.a
- libboost_filesystem-mgw47-mt-1_52.a
- libboost_filesystem-mgw47-mt-d-1_52.a
- libboost_graph-mgw47-mt-1_52.a
- libboost_graph-mgw47-mt-d-1_52.a
- libboost_iostreams-mgw47-mt-1_52.a
- libboost_iostreams-mgw47-mt-d-1_52.a
- libboost_locale-mgw47-mt-1_52.a
- libboost_locale-mgw47-mt-d-1_52.a
- libboost_math_c99-mgw47-mt-1_52.a
- libboost_math_c99-mgw47-mt-d-1_52.a
- libboost_math_c99f-mgw47-mt-1_52.a
- libboost_math_c99f-mgw47-mt-d-1_52.a
- libboost_math_c99l-mgw47-mt-1_52.a
- libboost_math_c99l-mgw47-mt-d-1_52.a
- libboost_math_tr1-mgw47-mt-1_52.a
- libboost_math_tr1-mgw47-mt-d-1_52.a
- libboost_math_tr1f-mgw47-mt-1_52.a
- libboost_math_tr1f-mgw47-mt-d-1_52.a
- libboost_math_tr1l-mgw47-mt-1_52.a
- libboost_math_tr1l-mgw47-mt-d-1_52.a
- libboost_prg_exec_monitor-mgw47-mt-1_52.a
- libboost_prg_exec_monitor-mgw47-mt-d-1_52.a
- libboost_program_options-mgw47-mt-1_52.a
- libboost_program_options-mgw47-mt-d-1_52.a
- libboost_random-mgw47-mt-1_52.a
- libboost_random-mgw47-mt-d-1_52.a
- libboost_regex-mgw47-mt-1_52.a
- libboost_regex-mgw47-mt-d-1_52.a
- libboost_serialization-mgw47-mt-1_52.a
- libboost_serialization-mgw47-mt-d-1_52.a
- libboost_signals-mgw47-mt-1_52.a
- libboost_signals-mgw47-mt-d-1_52.a
- libboost_system-mgw47-mt-1_52.a
- libboost_system-mgw47-mt-d-1_52.a
- libboost_test_exec_monitor-mgw47-mt-1_52.a
- libboost_test_exec_monitor-mgw47-mt-d-1_52.a
- libboost_thread-mgw47-mt-1_52.a
- libboost_thread-mgw47-mt-d-1_52.a
- libboost_timer-mgw47-mt-1_52.a
- libboost_timer-mgw47-mt-d-1_52.a
- libboost_unit_test_framework-mgw47-mt-1_52.a
- libboost_unit_test_framework-mgw47-mt-d-1_52.a
- libboost_wave-mgw47-mt-1_52.a
- libboost_wave-mgw47-mt-d-1_52.a
- libboost_wserialization-mgw47-mt-1_52.a
- libboost_wserialization-mgw47-mt-d-1_52.a
それは bjam メッセージでインストールされました:
そのリストはいっぱいですか、それともブーストのインストールでいくつかのライブラリが欠けていましたか? 2 台の異なるコンピューターが同じアクションの異なる結果を返す可能性があるのはなぜですか (リンクから同じ手順を 2 回実行しました)。(わずか 6 つの結果ライブラリを含むコンプには VC2010 がなく、52 のライブラリを含むコンプには VC2010 がありました。それが理由でしょうか?)
boost.log のインストール
次に、52 個のライブラリを備えたマシンで、boost.log のインストール方法の手順に従って、boost.log のインストールを開始しました。
そして、2 つの追加ライブラリを取得しました。
- libboost_log_setup-mgw47-mt-1_52.a (サイズ 22733 kb)
- libboost_log_setup-mgw47-mt-d-1_52.a (サイズ 74933 kb)
bjam からの次の結果メッセージ:
次に、boost.log ディストリビューションからサンプルを取得しました。
プロジェクトにライブラリを追加 (および含まれるファイルへのパス): libboost_log_setup-mgw47-mt-d-1_52.a も追加
しかし、コンパイル中にエラーが発生します:
そして、それらを解決する方法がわかりません。
説明してください(可能であれば):
- ブーストのコンパイル/インストールがいっぱいになったことをどうやって知ることができますか? そうでない場合はどうすればよいですか?
- boost.log のコンパイルがいっぱいになったことを確認するにはどうすればよいですか?
- 共有オブジェクトとしてboost.libをビルドする必要があることを読みましたが、bjamのコマンドruntime-link = sharedにもかかわらず、libsはサブディレクトリ「link-static」にありました。私はそれで何かをする必要がありますか?
- 表示されたエラーはどうすればよいですか?
ご協力ありがとう御座います。
c++ - Boost Log 2.0 : ログの重大度レベルが空
バージョン1との違いがいくつかあるBoost-Log 2.0を使用しており、「重大度」属性の出力に苦労しています。
「Boost.Format-style」フォーマッターを使用しています
TimeStamp
、LineID
、およびMessage
ですcommon_attributes
。Uptime
を使用して追加した属性ですattrs::timer()
。Severity
を使用すると自動的に追加されると思っていましたseverity_logger
が、どうやらそうではなく、それが私の問題です。私は空の重大度を取得します、例えば:
空の に注意してください<>
。を使用して重大度を追加しようとしましたregister_simple_formatter_factory
が、コンパイラ エラーが発生します。
理由がわかりません。
これが私のコードです:
コメントアウトされた行に注目してください:
上記のエラーが発生します。
私はそれをコンパイルします:
c++ - printf スタイルのマクロで boost.log を使用する
カスタムのプラットフォーム依存ロガーを使用するアプリケーションに取り組んでいます。アプリケーションはいくつかの printf スタイルのマクロを定義します:
ここ数日、アプリケーションを使用するように移動する作業を行ってきましたboost.log
。私が抱えている最大の問題は、boost のログ API が iostream スタイルで実装されているため、ロガーの内部のみを変更する必要があるように、このマクロ形式を保持しようとすることです。
- 文字列バッファを使用せずに、printf スタイルの引数を取得してブースト ロガーに出力するマクロを提供する簡単な方法はありますか? (文字列にフォーマットする必要があると、パフォーマンスに影響があると思います)
- そうでない場合、さまざまなプラットフォームの書式設定関数の実装を
va_args
必要とせずに文字列を書式設定する方法はありますか?#ifdef
(これは、そもそもboost.logに移行することの全体的なポイントでした)
c++ - Boost.Log をファイルにリダイレクトする方法
並行アプリケーションで単純なログ ファイルが必要です。私はBoost.Log
v2.0をダウンロードし、それを使用してコンパイルしましたBoost 1.53.0
.
問題は、Boost.Log
コンソールでの出力です。を使用してBOOST_LOG_TRIVIAL(trace)
います。
ファイルにリダイレクトする良い方法はありBOOST_LOG_TRIVIAL
ますか?
boost - 静的にリンクしているboost.logエラー
MSVC 10.0 でプロジェクトを boost.log に静的にリンクしようとすると、次の (およびその他の) エラーが発生します。
このプロジェクトは、boost システム、ファイルシステム、およびスレッド ライブラリにもリンクしていることに注意してください。
私のプロジェクトではBOOST_ALL_DYN_LINK
またはBOOST_LOG_DYN_LINK
マクロが定義されていないため、__declspec
署名が表示されるとは思っていませんでした。これが究極の問題だと考えています。このライブラリを静的に適切にリンクするために必要なものが不足していますか?
アップデート
プロジェクトのプリコンパイル済みヘッダーを削除し、「クリーン」を実行すると、すべてが正常にリンクされました。プリコンパイルされたヘッダーが原因で、プロジェクトが CRT に静的にリンクされた可能性はありますか?
c++ - Boost.Log はロギング フィルタを設定できません (宣言されていない識別子「重大度」)
プロジェクトで Boost.Log を実行しようとしています。問題は、簡単な例の次の行にあります。
私のコードでは、これは次のように変換されます。
ただし、次のエラーが発生します。
名前空間を検索して、これを行う方法を見つけようとしていますが、実際に機能するものは見つかりません。これにはクレイジーなラムダ関数が必要なようです。いくつかの代替手段 (フィルタリング レベルを満たす関数を定義すること) で問題ありませんが、これを達成する方法がわかりません。何か案は?
Boost.Log バージョン 2.0-r862 と Boost 1.53.0 を使用しています。
解決策: Ryan は、インクルードを確認する必要があると指摘しtrivial.hpp
ましcore.hpp
たexpressions.hpp
。それらを含めることで問題が解決しました。
c++ - Boost.Log の利用方法
Boost.Log
現在、ロギング目的での使用を検討しています。非常に興味深いように見えますが、ロガー オブジェクトをどのように管理すればよいのか、まだよくわかりません。
私が見る限り、次のオプションがあります。
- 1 つのグローバル ロガー オブジェクトを使用します。
Boost.Log
のラベル メカニズムを使用して、クラスごとに 1 つのロガー オブジェクトを使用します。- オブジェクトごとに 1 つのロガー オブジェクトを使用する (構成またはサブタイピングのいずれかを使用)。
次の質問があります。
- 個々のアプローチの利点は何ですか?マニュアルには最後のアプローチが優れていると書かれていますが、その
Boost.Log
理由がわかりませんでした。 - ロギングの構文上のオーバーヘッドを最小限に抑えるアプローチはどれですか? または、構文上のオーバーヘッドを削減するために何らかの手法を利用していますか? たとえば、各コンストラクターからロガー オブジェクトを初期化することは避けたいのですが、残念ながらコンストラクターの委任はまだオプションではありません。
Boost.Log
アプリケーションへの統合、または を利用する新しいアプリケーションの作成について、他に何か提案はありBoost.Log
ますか?
boost - OSX 10.8.3 で Boost 1.53.0 Boost Log 2.0r862 をビルドする
私は Mac OSX 10.8.2 で Boost Log 2.0r862 を使用して Boost 1.53.0 をビルドし、偽のルートにインストールして /usr/lib* と /opt/lib* をクリーンに保ちます。Boost をビルドしてインストールし、これ./bootstrap --prefix=/path/to/myfakerootdir
を使用してライブラリを./b2 install
インストールしました。このビルドとインストールは成功しました。プロジェクトで cmake を実行すると、ライブラリ インクルードと lib ディレクトリが正しく検出されます。それでも、ビルドが完了して実行可能ファイルを実行しようとした後、取得した
dyld: Library not loaded: libboost_system.dylib
Referenced from: /Users/brad/dev/strata/strataextract/build/Debug/StrataExtractUnitTests
Reason: image not found
私が調査した可能性のある問題には次のようなものがあります:
1. otool を使用して実行可能ファイルを手動で変更する (非常に「ハッキーな」解決策のように思えますが)
2. Github Macports Overlay
で変更されたポートファイルを使用します (提供されている現在のバージョンは古すぎますが) 3. Boost に関する複数のビルド チュートリアル、残念ながらほとんどがBjam
を参照しており、私が理解していることからすると、もはや良い習慣ではありません.
相対パスを false に設定する必要がある同様の状況を覚えているようですが、どうすればよいかわかりません. Boost + bjam でこれを行います。
c++ - boost.log のメモリ リークを防ぐ方法はありますか?
boost.log チュートリアルに基づいて、非常に単純なテスト プログラムを作成しました。
これを valgrind で実行すると、7 つの損失レコードが生成されます。これは、boost.log を使用したより複雑なプログラムで見られる結果と一致しています。これらのリークを排除する方法を知っている人はいますか、それとも単に抑制する必要がありますか?
c++ - Boost Logging オブジェクトの << 演算子のオーバーロード
したがって、すべてのロギング目的で Boost.Log を使用したいと考えています。私は現在、ヘルパー メソッドのインスタンス化と設定に必要なすべての操作を含むクラスを作成しています。
問題は、 << 演算子をオーバーロードして cout の方法で使用したいことです。さまざまな引数の型を持つために使用できるようにしたいのが最大の問題のようです。
これが私が試したものです:
ただし、これはロジックに少し欠陥があることを理解しています。複数の引数を << に渡すには、再帰的である必要があります。しかし、ブーストログでこれを行う方法について少し混乱しています。
便利なブースト マクロの代わりに、カスタム シンクを使用してログ システムを定義する必要がありますか? もしそうなら、これは std::ostream の戻り値をサポートしますか? これは、戻り値とストリームへの入力値になると思います。