Salsudan’s Blog

Logging

  •  Boost Logging library (0.2version)

 Author: John Torjo, www.torjo.com

아직 정식으로 Boost에 포함되진 않았습니다.
현재 Version은 v0.22.7까지 나왔습니다.

#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

No Comments Yet »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Blog at WordPress.com.