- Boost Logging library (0.2version)
Author: John Torjo, www.torjo.com
아직 정식으로 Boost에 포함되진 않았습니다.
현재 Version은 v0.22.7까지 나왔습니다.
- 우선 Boost를 사용할수 있는 환경을 갖추셔야 됩니다.
http://www.boost.org/users/download/ - Direct Link : http://www.torjo.com/code/log2.zip
SVN Link(svn client필요) : http://svn.boost.org/svn/boost/sandbox/logging/ - logging/boost(header only) 폴더를 Boost가 설치된 곳에 붙여넣기 하세요.
헤더만 포함해서 사용하실수 있습니다. - log.h
#ifndef LOG_H_header
#define LOG_H_header#include <boost/logging/format_fwd.hpp>
// 1. Cache String사용을 지정하는 매크로(최적화)
BOOST_LOG_FORMAT_MSG( optimize::cache_string_one_str<> )#ifndef BOOST_LOG_COMPILE_FAST
#include <boost/logging/format.hpp>
#include <boost/logging/writer/ts_write.hpp>
#endif// 2. log_impl class 지정
typedef boost::logging::logger_format_write< > log_type;// 3. Filter 와 Logger 선언
BOOST_DECLARE_LOG_FILTER(g_l_filter, boost::logging::level::holder)
BOOST_DECLARE_LOG(g_l, log_type)// 4. Log에 Tag포함시킨 Macro
#define LDBG_ BOOST_LOG_USE_LOG_IF_LEVEL(g_l(), g_l_filter(), debug ) << “[dbg] “
#define LERR_ BOOST_LOG_USE_LOG_IF_LEVEL(g_l(), g_l_filter(), error ) << “[ERR] “
#define LAPP_ BOOST_LOG_USE_LOG_IF_LEVEL(g_l(), g_l_filter(), info ) << ” “void init_logs();
#endif
- log.cpp
#include log.h”
#include <boost/logging/format.hpp>
#include <boost/logging/writer/ts_write.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>using namespace boost::logging;// 5. Filter와 Logger 정의
BOOST_DEFINE_LOG(g_l, log_type)
BOOST_DEFINE_LOG_FILTER(g_l_filter, level::holder)void init_logs()
{
boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();
std::string filename = boost::posix_time::to_iso_string(now);
filename += “.log”;
// 6. Log Format 추가 -> [(4) (3) (2) (1)] 형태로 출력됩니다.
g_l()->writer().add_formatter( formatter::thread_id()); //(1)
g_l()->writer().add_formatter( formatter::idx() ); //(2)
g_l()->writer().add_formatter( formatter::time(“$yyyy::$MM::$dd $hh:$mm:$ss “) ); //(3)
g_l()->writer().add_formatter( formatter::append_newline() ); //(4)
// 7. Log 출력 매체 추가 (Window - shell창, Visual Debug 출력창, File)
g_l()->writer().add_destination( destination::cout() );
g_l()->writer().add_destination( destination::dbg_window() );
g_l()->writer().add_destination( destination::file(filename) );
g_l()->turn_cache_off();
}; - mylog.hclass mylog
{
public:
void operator()(const std::string& log)
{
LERR_ << log;
LDBG_ << log;
LAPP_ << log;
}
}; - main.cpp
int main()
{
init_logs();
mylog mylog_;
mylog_(“Hello World!!!!”); return 0;
} - Result
