kkAyatakaのメモ帳。

誰かの役に立つかもしれない備忘録。

Boost.Logを使う。

Boost 1.54.0からLogが入ったので使ってみました。

ログの取り回しは、とりあえずグローバルに1つあればよいので、Boost.Logのチュートリアルにあるように、TRIVIALを使っていきます。

BOOST_LOG_TRIVIAL

チュートリアルほぼまんまですが。レベルでフィルタわけするとこんな感じですかね。コマンドライン引数によって動的にするのもよさそうですが。

#include <boost/log/trivial.hpp>

int main() {
  namespace logging = boost::log;

#ifdef _DEBUG
  // do nothing
#else
  logging::core::get()->set_filter(
    logging::trivial::severity >= logging::trivial::info
    );
#endif

  BOOST_LOG_TRIVIAL(trace) << "trace message";
  BOOST_LOG_TRIVIAL(debug) << "debug";
  BOOST_LOG_TRIVIAL(info) << "info message";
  BOOST_LOG_TRIVIAL(warning) << "warning message";
  BOOST_LOG_TRIVIAL(error) << "error message";
  BOOST_LOG_TRIVIAL(fatal) << "fatal message";
}

これだけで、標準でフォーマットされた文字列が出力されます。

[2013-07-20 22:15:13.016607] [0x000004f8] [trace]   trace message
[2013-07-20 22:15:13.016607] [0x000004f8] [debug]   debug
[2013-07-20 22:15:13.016607] [0x000004f8] [info]    info message
[2013-07-20 22:15:13.016607] [0x000004f8] [warning] warning message
[2013-07-20 22:15:13.017607] [0x000004f8] [error]   error message
[2013-07-20 22:15:13.017607] [0x000004f8] [fatal]   fatal message