zoukankan      html  css  js  c++  java
  • CPP(c++) google glog

    Google 轻量级,入门简单,功能较全,线程安全,支持自定义。

    参考: https://www.jianshu.com/p/a576ed1c2cd3

    int main(int argc,char* argv[])
    {
        google::InitGoogleLogging(argv[0]);// 初始化
        FLAGS_logtostderr = false//设置日志消息是否转到标准输出而不是日志文件
        FLAGS_alsologtostderr = false//设置日志消息除了日志文件之外是否去标准输出
        FLAGS_log_prefix = true//设置日志前缀是否应该添加到每行输出
        FLAGS_log_dir = "./log";    //预创建好
        //google::SetStderrLogging(google::GLOG_FATAL);
         for(int i = 0 ; i < 100 ; i++)
         {
              LOG(INFO) << "Hello,info! ";
              LOG(ERROR) << "Hello erroe! " <<i;
              LOG(WARNING) << "Hello,waring! "<<i<<"+"<<i<<"="<<i+i;
              //LOG(FATAL) << "Hello,fatal! ";
          }
          google::ShutdownGoogleLogging();//关闭log
          return 0;
    }
    CHECK* 宏定义:
    
    #define CHECK(a)                                            
       if(!(a)) {                                              
           LOG(ERROR) << " CHECK failed " << endl              
                       << #a << "= " << (a) << endl;          
           abort();                                            
       }                                                      
     
    #define CHECK_NOTNULL(a)                                    
       if( NULL == (a)) {                                      
           LOG(ERROR) << " CHECK_NOTNULL failed "              
                       << #a << "== NULL " << endl;           
           abort();                                            
        }
     
    #define CHECK_NULL(a)                                       
       if( NULL != (a)) {                                      
           LOG(ERROR) << " CHECK_NULL failed " << endl         
                       << #a << "!= NULL " << endl;           
           abort();                                            
        }
     
     
    #define CHECK_EQ(a, b)                                      
       if(!((a) == (b))) {                                     
           LOG(ERROR) << " CHECK_EQ failed "  << endl          
                       << #a << "= " << (a) << endl           
                       << #b << "= " << (b) << endl;          
           abort();                                            
        }
     
    #define CHECK_NE(a, b)                                      
       if(!((a) != (b))) {                                     
           LOG(ERROR) << " CHECK_NE failed " << endl           
                       << #a << "= " << (a) << endl           
                       << #b << "= " << (b) << endl;          
           abort();                                            
        }
     
    #define CHECK_LT(a, b)                                      
       if(!((a) < (b))) {                                      
           LOG(ERROR) << " CHECK_LT failed "                   
                       << #a << "= " << (a) << endl           
                       << #b << "= " << (b) << endl;          
           abort();                                            
        }
     
    #define CHECK_GT(a, b)                                      
       if(!((a) > (b))) {                                      
           LOG(ERROR) << " CHECK_GT failed "  << endl          
                      << #a <<" = " << (a) << endl            
                       << #b << "= " << (b) << endl;          
           abort();                                            
        }
     
    #define CHECK_LE(a, b)                                      
       if(!((a) <= (b))) {                                     
           LOG(ERROR) << " CHECK_LE failed "  << endl          
                       << #a << "= " << (a) << endl           
                       << #b << "= " << (b) << endl;          
           abort();                                            
        }
     
    #define CHECK_GE(a, b)                                      
       if(!((a) >= (b))) {                                     
           LOG(ERROR) << " CHECK_GE failed "  << endl          
                       << #a << " = "<< (a) << endl            
                       << #b << "= " << (b) << endl;          
           abort();                                            
        }
     
    #define CHECK_DOUBLE_EQ(a, b)                               
       do {                                                    
           CHECK_LE((a), (b)+0.000000000000001L);              
           CHECK_GE((a), (b)-0.000000000000001L);              
        }while (0)
  • 相关阅读:
    火狐显示不安全链接
    signal信号
    I/O缓冲
    [pe530]GCD of Divisors
    学校寒假集训作业
    纳克萨玛斯「GDOI2007」(网络流)
    [清华集训2016] 汽水
    有上下界网络流
    [AHOI2014]支线剧情(有上下界的网络流)
    [SCOI2016]妖怪
  • 原文地址:https://www.cnblogs.com/heimazaifei/p/12176749.html
Copyright © 2011-2022 走看看