24 Ağustos 2016 Çarşamba

log add_console_log metodu

Giriş
Ş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
);
formatter
exp:stream Sınıfı kullanılır.Bazı formatter'lar önceden tanımlı

custom formatter
Sabit bir değer tanımları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
Şöyle yaparız.
#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