2013-05-01 8 views
6

Boost.Logをプロジェクトに追加しようとしています。これは、以下に変換され、私のコードでBoost.Logがロギングフィルタを設定できません(宣言されていない識別子 '重大度')

using namespace boost::log; 
core::get()->set_filter 
(
    trivial::severity >= trivial::info 
); 

:問題は、簡単な例から次の行にしてい

boost::log::core::get()->set_filter(
    boost::log::trivial::severity >= boost::log::trivial::info 
); 

しかし、私は次のエラーを取得:

error C2039: 'severity' : is not a member of 'boost::log::v2s_mt_nt5::trivial' 
error C2065: 'severity' : undeclared identifier 

私は、これをどうやってやろうとしているのかを調べようとしている名前空間を探し回っていますが、実際に動作するものは何も見つかりません。これは、これに必要なクレイジーラムダ関数のようです。私はいくつかの代替(フィルタリングレベルを埋める関数を定義すること)には問題ないですが、これを達成する方法がわかりません。何か案は?

私はBoost.Logバージョン2.0-r862とBoost 1.53.0を使用しています。

SOLUTION:ライアンは、私は私の含みをチェックする必要があることを指摘し、私は唯一のtrivial.hpp含めましたが、含まれてcore.hppexpressions.hppも必要とされる十分に確認してください。それらを含めて問題を解決しました。

// need at least these 3 to get "trivial" to work 
#include <boost/log/core.hpp> 
#include <boost/log/expressions.hpp> 
#include <boost/log/trivial.hpp> 
+0

を。私の質問はここにあります:stackoverflow.com/q/29707017/1735836 – Patricia

答えて

2

trivial.hppを見ると、severitykeywords名前空間の一部である表示されます。 boost::log::keywords::severityを試しましたか?ここで

+0

ええ、私もそれを試みました。 {const std :: valarray <_Ty>&const std :: valarray <_Ty>&) ':const stdのテンプレート引数を推定できませんでした。 :: valarray <_Ty>&from 'const boost :: parameter :: keyword ' – aardvarkk

+0

キーワードの型に> =演算子が定義されていないようですか?私は "重大度レベルのキーワード"が "重大度レベル"とは違うと思うので、これはうまくいきません... – aardvarkk

+1

うーん、含めることができますか? – Ryan

0

ソリューション@aardvarkkまとめたもの、C++ 11で完全な実施例である:ねえ、ツチブタ、私は厳しさをフィルタリングト​​ラブルを抱えている

#include <boost/log/expressions.hpp> 
#include <boost/log/core.hpp> 
#include <boost/log/trivial.hpp> 

namespace logging = boost::log; 

auto init() -> void 
{ 
    logging::core::get()->set_filter 
    (
     logging::trivial::severity >= logging::trivial::warning 
    ); 
} 

auto main(int argn, char *args[]) -> int 
{ 
    init(); 

    BOOST_LOG_TRIVIAL(info) << "Testing the log system"; 
    BOOST_LOG_TRIVIAL(error) << "Testing the log error"; 


    return 0; 
} 
関連する問題