Giriş
Şu satırı dahil ederiz.
Şöyle yaparız.
Eğer kendi enum'larımız kullanmak istersek şöyle yaparız
Eğer kendi enum'larımız kullanmak istersek şöyle yaparız.
Eğer kendi enumlarımızı kullanmak istersek şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/log/trivial.hpp>
Ya da şu satırı dahil ederiz.#include <boost/log/sources/severity_logger.hpp>
Bu sınıf bir source'tur. Source ve Sink arasındaki fark şöyledir. +--------------+
+---> | console sink | ----> stdout
| +--------------+
|
+--------+ +------+ | +--------------+
| source | ---> | core | ---+---> | file sink | ----> log1.txt
+--------+ +------+ | +--------------+
|
| +--------------+
+---> | file sink | ----> log2.txt
+--------------+
ConstructorŞöyle yaparız.
using namespace boost::log::trivial;
boost::log::sources::severity_logger< severity_level > lg;
ÖrnekEğer kendi enum'larımız kullanmak istersek şöyle yaparız
enum SeverityLevel { trace, fatal };
boost::log::sources::severity_logger<SeverityLevel> lg;
Şöyle kullanırız.BOOST_LOG_SEV(lg, trace) << "This is a trace message";
BOOST_LOG_SEV(lg, fatal) << "This is a fatal message";
ÖrnekEğer kendi enum'larımız kullanmak istersek şöyle yaparız.
// Define your severity levels
enum severity_level
{
debug, normal, error, fatal
};
// Define an attribute keyword for severity level
BOOST_LOG_ATTRIBUTE_KEYWORD(a_severity, "Severity", severity_level)
// Define a logger type that uses your severity levels
typedef boost::log::sources::severity_logger< severity_level > logger;
Şöyle kullanırız.logger lg;
BOOST_LOG_SEV(lg, debug) << "Debug message";
BOOST_LOG_SEV(lg, normal) << "Normal message";
BOOST_LOG_SEV(lg, error) << "Error message";
BOOST_LOG_SEV(lg, fatal) << "Fatal message";
ÖrnekEğer kendi enumlarımızı kullanmak istersek şöyle yaparız.
namespace logging = boost::log;
enum severity_level
{
debug,
info,
warning,
error,
exception
};
src::severity_logger<severity_level> lg;
void write_log(severity_level level, const char *message, ...)
{
char buffer[512];
va_list args;
// Parse ellipsis and add arguments to message
va_start (args, message);
vsnprintf (buffer, sizeof(buffer), message, args);
va_end (args);
BOOST_LOG_SEV(lg, level) << buffer;
}
Kendi log macrolarımız için şöyle yaparız.#define DEBUG(msg, ...) Logger::write_log(debug, msg, ##__VA_ARGS__);
#define INFO(msg, ...) Logger::write_log(info, msg, ##__VA_ARGS__);
#define WARNING(msg, ...) Logger::write_log(warning, msg, ##__VA_ARGS__);
#define ERROR(msg, ...) Logger::write_log(error, msg, ##__VA_ARGS__);
Şöyle yaparız.DEBUG("Test string %s", "additional string");
Constructor - multithreadedŞöyle yaparız.
using namespace boost::log::trivial;
boost::log::sources::severity_logger_mt < severity_level > lg;
Bu sınıfın kardeşi için şöyle yaparız.boost::log::sources::wseverity_logger_mt< severity_level> lg;
add_attribute metodu
Şöyle yaparız.src::severity_logger< severity_level > lg;
lg.add_attribute("Function", attrs::constant< std::string >(strFuncName));
lg.add_attribute("FileName", attrs::constant< std::string >(strFileName));
lg.add_attribute("Line", attrs::constant<int >(lineNo));
Şöyle yaparız.src::severity_logger_mt<SeverityLevel> logger;
logger.add_attribute("Tag", attrs::constant<std::string>("DEFAULT"));
logger.add_attribute("File", attrs::constant<std::string>(__FILE__));
Hiç yorum yok:
Yorum Gönder