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