動的検索アルゴリズムで多くのイベントをログに記録したい (例: グローバル最適への収束に関する情報)。このロギングには、オフ/オンを切り替えるスイッチが必要です。現在、それを達成するための多くの可能性があります:
- アルゴリズムのログ バージョンと非ログ バージョンを実装する -> 冗長性
- マクロを使用する -> 醜く、安全ではない
- 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」へのリンクは、どのレベルがログに記録され、どのレベルが記録されないかをすでに決定していますか?
私の場合、ログのオン/オフに関するコンパイル時の決定のみが必要なので、比較的簡単なはずです。
ご協力いただきありがとうございます。
サーシャ