3

動的検索アルゴリズムで多くのイベントをログに記録したい (例: グローバル最適への収束に関する情報)。このロギングには、オフ/オンを切り替えるスイッチが必要です。現在、それを達成するための多くの可能性があります:

  • アルゴリズムのログ バージョンと非ログ バージョンを実装する -> 冗長性
  • マクロを使用する -> 醜く、安全ではない
  • C++ ロギング ライブラリを使用します (または、ロギング ライブラリの機能範囲の 1% を使用します)。

私はPantheiosを使用することに決めました。これは、特にパフォーマンスに関する主張があったためです (このロギングのためにパフォーマンスを大幅に低下させたくありません。これは開発でのみ必要です)。私はこのライブラリの機能の多くを必要としないことを認めなければなりませんが、私はそれを使用するためのはるかに優れた/安全な方法だと思いました. たぶん、私が知らないより適切な代替手段があるでしょう(ロギングのためだけにコンパイル時の決定が必要です->その目的のために設計されたロギングライブラリがあるかどうかわかりません)。

コンパイル、インストール、そして最終的にリンクした後 (手動リンクでは成功しませんが、scons構築ツールでは gcc -> 明示的リンクを使用)、ちょっとした例を試してみたかったのです。

それを次のようなものに減らしましょう。

#include "pantheios/pantheios.hpp"
#include "pantheios/frontends/stock.h"
const PAN_CHAR_T PANTHEIOS_FE_PROCESS_IDENTITY[] = "pantheios_test";    // specify process identity

int main()
{
    pantheios::log_ALERT("alert-event");
    pantheios::log_DEBUG("debug-event");
    pantheios::log_INFORMATIONAL("just information");
    return 1;
}

リンクは次のファイルで行われます。

LIBS=['pantheios.1.core.gcc44', 'pantheios.1.be.fprintf.gcc44', 'pantheios.1.bec.fprintf.gcc44', 'pantheios.1.fe.all.gcc44', 'pantheios.1.util.gcc44']

簡単な質問は次のとおりです。コンソール出力のオフ/オンを切り替える方法は? バックエンドに与えられる重大度レベルを選択する方法は?

ドキュメントを調べると、重大度レベルを取る関数がたくさんありますが、これらの関数は初期化のために一度自動的に呼び出されます。重大度レベルの動的な変更が可能であることを知っています。これらの設定をどこで変更するのか正確にはわかりません。それらはフロントエンドコンポーネントにあるはずです。「fe_all」へのリンクは、どのレベルがログに記録され、どのレベルが記録されないかをすでに決定していますか?

私の場合、ログのオン/オフに関するコンパイル時の決定のみが必要なので、比較的簡単なはずです。

ご協力いただきありがとうございます。

サーシャ

4

1 に答える 1

7

「fe_all」へのリンクは、どのレベルがログに記録され、どのレベルがログに記録されないかについて、すでに何らかの決定を下していますか?

簡単な答え:はい。

fe.allは、すべての重大度レベルを有効にします。「すべての」メッセージがログに記録されます。

より良い制御が必要な場合は、fe.simpleを試してください。デフォルトでは、デバッグビルドのすべてと、リリースのDEBUGとINFOを除くすべてがオンになります。fe.simpleヘッダー(pantheios / frontends / fe.simple.h、iirc)で関数pantheios_fe_simple_setSeverityThresdhold()(または同様のもの)を呼び出すことにより、いつでも(デバッグまたはリリースで)しきい値を変更できます。

PantheiosはロギングAPIライブラリとして記述されていることに注意してください。API、初期化制御、および既存の「リッチ」ロギングライブラリに対する出力を提供することが目的だと思います。「ストック」フロントエンドとバックエンドを提供することは、(i)迅速に習得し、(ii)単純な要件(プログラムが適格となる可能性がある)のユーザーにとって便利です。

ところで、プロジェクトサイトのPantheiosフォーラムはかなりサポートされていると思うので、ここだけでなく、そこにも質問を投稿することをお勧めします。

于 2010-11-25T19:21:12.627 に答える