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

댓글 남기기 »

댓글이 없습니다.

이 글의 댓글을 위한 RSS 피드 트랙백 URL

댓글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

테마: Rubric. WordPress.com 제공.

팔로우

모든 새 글을 수신함으로 전달 받으세요.