Giriş
Şu satırı dahil ederiz.
Şu satırı dahil ederiz.
#include <boost/log/utility/setup/console.hpp>
Global bir sink oluşturur. Source ve Sink arasındaki fark şöyledir. +--------------+
+---> | console sink | ----> stdout
| +--------------+
|
+--------+ +------+ | +--------------+
| source | ---> | core | ---+---> | file sink | ----> log1.txt
+--------+ +------+ | +--------------+
|
| +--------------+
+---> | file sink | ----> log2.txt
+--------------+
add_console_log metodu - stream + args
Sink tipinden bir nesne döner. İskeleti şöyledir. args "named parameter" olduğu için istenilen sırada verilir.std::string the_format = "...";
boost::log::add_console_log(
std::clog,
boost::log::keywords::auto_flush = true,
boost::log::keywords::format = the_format
);
Sabit bir değer tanımlarız.
Şöyle yaparız.std::string tag = "omega";
Sabit değer logger'a attribute olarak eklenir. Şöyle yaparız.boost::log::sources::severity_logger<boost::log::trivial::severity_level > m_log;
m_log.add_attribute(
"Tag",
boost::log::attributes::constant< std::string >( tag )
);
Logger'a bağlanan sink'e formatter olarak veririz. Şöyle yaparız.std::string the_format = "[%TimeStamp%] (%LineID%) [%Severity%]";
the_format += " [%Tag%]";
the_format += ": %Message%";
Sink'i oluştururuz.boost::log::add_console_log(
std::clog,
boost::log::keywords::auto_flush = true,
boost::log::keywords::format = the_format
);
Bu logger her kullanıldığında şu çıktıyı alırız.[2016-Aug-23 17:51:36.853359] (2) [info] [omega]:
Hello world!!!
add_console_log metodu - stream + format + flush#include <boost/log/utility/setup/console.hpp>
#include <boost/log/support/date_time.hpp>
namespace logging = boost::log;
namespace expr = boost::log::expressions;
namespace keywords = boost::log::keywords;
auto format = expr::stream
<< expr::format_date_time< boost::posix_time::ptime >
("TimeStamp", "%Y-%m-%d %H:%M:%S.%f")
<< " progname " << logging::trivial::severity
<< ": " << expr::smessage;
auto consoleOutput = logging::add_console_log(
std::cerr, keywords::format = format, keywords::auto_flush = true
);
Hiç yorum yok:
Yorum Gönder