glog使用

glog 是一款C/C++的 log 模块,也是我找到的能直接在AIX上用xlc编译的 LOG 模块。 cookie

glog中为每个log级别都会生成一个文件,低级别log文件中会包含其余高级别的log,例如XXX.INFO 文件中会包含INFO,WARNING,ERROR,FATAL的log,可是XXX.ERROR中不会包含INFO和WARNING的log。咱们也能够设定wrapper来改变写log的行为,例如我想把INFO log 作特殊处理,发送给另一个进程,能够这样写: app

using namespace google;

struct MyLogger : public base::Logger {


  virtual void Write(bool /* should_flush */,
                     time_t /* timestamp */,
                     const char* message,
                     int length) {
          //  write your log message to where ever you want
          //  suggest to put the log into your local buffer
  }

  virtual void Flush() { 
          // flush the local buffer
  }

  virtual uint32 LogSize() {
          return 0; // return the current size of local buffer
  }
};



int main(int argc, char* argv[]) {
        
        google::SetStderrLogging(google::FATAL);
        google::InitGoogleLogging(argv[0]);

        MyLogger my_logger;
        base::SetLogger(GLOG_INFO, &my_logger);
        

        LOG(INFO) << "Found info cookies";       //0
        LOG(WARNING) << "Found WARNING cookies"; //1
        LOG(ERROR) << "Found error cookies";     //2
        
}

上面的代码运行后不会产生APP.INFO这个文件,由于咱们將INFO的Logger替换成了MyLogger,能够在MyLogger中实现向另一个进程发送异步消息,使得程序没必要等待log写入磁盘 异步

相关文章
相关标签/搜索