stream Sınıfı
Giriş
Şu isim alanını dahil ederiz.
Bu sınıf formatter'a çevrilebiliyor. Şöyle yaparız.
FileName
Şöyle yaparız.
Şöyle yaparız.
Elimizde 4 tane level(attribute) olsun
Şöyle yaparız
Şöyle yaparız.
Şu şekilde kullanırız
Şöyle yaparız.
Hour:Minute:Second
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
if_ koşulu
Şöyle yaparız.
Giriş
Şu satırı dahil ederiz.
#include <boost/log/expressions.hpp>
Şu isim alanını dahil ederiz.
namespace expr = boost::log::expressions;
namespace attr = boost::log::attributes;
boost::log::formatter get_my_formatter ()
{
return boost::log::expressions::stream
<< ...
<< ...
<< ...
<< ...
<< ...
<< ...
<< ...;
}
formatter ise bir sink ile kullanıyor. Şöyle yaparız.
sink->set_formatter (get_my_formatter ());
Eğer alanlar için karakter büyüklüğü tanımlamak istersek expressions::format çağrısı ile birlikte kullanırız.FileName
Şöyle yaparız.
expr::stream
<< expr::attr<std::string>("FileName")
FunctionŞöyle yaparız.
expr::stream
<< expr::attr<std::string>("Function")
levelElimizde 4 tane level(attribute) olsun
"error","warning","exception","action".
Şöyle kullanırız.BOOST_LOG_SEV(_logger, level) << message;
Şöyle yaparız.boost::log::expressions::stream
<< boost::log::expressions::attr< std::string >("level")
LineŞöyle yaparız
expr::stream
<< ":" << expr::attr<int>("Line")
line idŞöyle yaparız.
boost::log::expressions::stream
//<< std::hex //To print the LineID in Hexadecimal format
<< std::setw(6) << std::setfill('0')
<< line_id
Şu şekilde kullanırız
%LineID%
Çıktı olarak şunu alırız... 1 ...
... 2 ...
... 3 ...
max_size_decor
Mesajın en fazla 100 karakter olmasını sağlar. Şöyle yaparız.
expr::stream
<< ...
<< expr::max_size_decor (1000)
[
expr::stream << expr::smessage
]
ProcessId
Şöyle yaparız.
Bu formatter için factory oluşturmamız gerekir. Şöyle yaparız.Şöyle yaparız.
expr::stream << expr::attr< attrs::current_process_id::value_type > ("ProcessID");
severityboost::log::register_simple_formatter_factory
< boost::log::trivial::severity_level, char >("Severity");
%Severity%
Şöyle yaparız.
boost::log::expressions::stream
<< boost::log::trivial::severity
Attribute olarak kullanıp daha sonra filtrelerde kullanmak istersek şöyle yaparız.expr::stream
<< "[" << expr::attr< boost::log::trivial::severity_level >("Severity") << "]"
ThreadIdŞöyle yaparız.
expr::stream
<< expr::attr< boost::thread::id >("ThreadID")
Sanırım sadece şu sabiti kullansak ta olur.[%ThreadID%]
Şöyle yaparız.
expr::stream
<< ...
<< " [" << expr::attr<attr::current_thread_id::value_type>("ThreadID") << "]"
<< ...
Timestamp
Şöyle yaparız.
std::string str ("%H:%M:%S");
if (bSubSeconds)
str += ".%f";
boost::log::expressions::stream
<< boost::log::expressions::format_date_time<boost::posix_time::ptime>
("TimeStamp", str)
Day:Month:Year Hour:Minute:Second Şöyle yaparız.
expr::stream
<<expr::format_date_time <boost::posix_time::ptime>
("TimeStamp", "%d-%m-%y %H:%M:%S")
Çıktı olarak şunu alırız2016-Aug-23 17:51:36.852912 ...
expr::stream << expr::format_date_time <boost::posix_time::ptime>
("TimeStamp", "[%Y-%m-%d_%H:%M:%S.%f] ");
smessage
Şöyle yaparız.
boost::log::expressions::stream
<< boost::log::expressions::smessage;
Şöyle yaparızexpr::stream
<< expr::xml_decor[expr::stream << expr::smessage]
Sanırım sadece şu sabiti kullansak ta olur."%Message%"
Diğerif_ koşulu
Şöyle yaparız.
sink->set_formatter
(
expr::stream
<< expr::if_(logging::trivial::severity <=
logging::trivial::severity_level::trace)
[
expr::stream << "<font color='black'>"
]
.else_
[
expr::stream << expr::if_(logging::trivial::severity <=
logging::trivial::severity_level::debug)
[
// ...
]
]
<< expr::format_date_time<boost::posix_time::ptime>(
"TimeStamp", "%Y.%m.%d-%H:%M:%S-UTC")
<< ": <" << logging::trivial::severity << "> " << expr::smessage
);
Hiç yorum yok:
Yorum Gönder