boost-users メーリング リストでこの質問をしましたが、残念ながら回答がありませんでした。うまくいけば、ここでより良い運が得られるでしょう。
形式をテキストで指定しようとしています (たとえば、コンパイルされた式を使用する代わりに、keywords::format = "blahblah")。
これは、再コンパイルする必要なく、コマンド ライン パラメーターまたは構成ファイルを使用して、フォーマットを簡単に再構成できるという考え方です。ただし、カスタムの severity_level 列挙を使用するときに %Severity% を指定すると、まったく出力されないようです。
boost_1_55_0/libs/log/example/keywords/main.cpp の例を見てください。
単純に 86 行目を次のように変更します。
logging::add_console_log(std::clog, keywords::format = "%Severity% %TimeStamp%: %_%");
解決しようとしていると思われる問題が表示されます。
私の疑いは、コアがカスタム Severity 属性を認識していないことです。これは、登録されておらず、%Severity% をどのフォーマッターにも解析できないためです。対照的に、以下の add_file_log は、コンパイルされた式を使用しているため、重大度レベルを正しく出力し、何を行う必要があるかを推測できます (その仮定で正しいでしょうか)?
独自の属性クラスを展開しないと、これを解決するために属性を追加できないようです。BOOST_LOG_ATTRIBUTE_KEYWORD で宣言された重大度に関連する属性またはフォーマッターを追加するにはどうすればよいですか? 次のように一致するように、123 行目の severity_logger のテンプレート パラメータを削除すると、次のようになることに注意してください。
src::severity_logger< > slg;
次に、列挙型ではなく標準の int に発展し、出力は人間が読める文字列ではなく int として「正しく」表示されます。今のところはこれで問題ありませんが、もちろん、可能であれば人間が判読できるようにしたいと考えています。これは、boost_1_55_0/libs/log/example/settings_file/main.cpp の例のとおりです。