0

Glog lib を使用してアプリケーション ログを記録したいと考えています。私のアプリケーションはマルチスレッドです。glog で提案されているように、スレッドセーフのために RAW_LOG を使用することになっています。これが私のコード例です。

  #include "stdafx.h"
  #define GLOG_NO_ABBREVIATED_SEVERITIES
  #include <windows.h>
  #include <glog/logging.h>
  #include <glog/raw_logging.h>
  using namespace std;

  int main(int /*argc*/, char** argv)
  {
      FLAGS_alsologtostderr = 1;

      google::SetLogDestination(google::GLOG_INFO, "E:/mylog.log");
      google::InitGoogleLogging(argv[0]);
      //LOG(INFO) << "Infomration";
      RAW_LOG_INFO("Test");

      RAW_LOG(INFO,"This is INFO");
      RAW_LOG(WARNING,"This is WARNING");
      RAW_LOG(ERROR, "This is Error");
      return 0;
   }

ただし、RAW_LOG を使用するとログ ファイルが生成されませんが、LOG() 関数を使用するとログ ファイルが生成されます。

RAW_LOG 関数の使用方法、または LOG() 関数がスレッドセーフかどうかを教えてください。

4

1 に答える 1

1

これは raw_logging.h からのものです

// * it logs straight and ONLY to STDERR w/o buffering

stderr にのみログを記録でき、低レベル コードでのデバッグのみを目的としているためRAW_LOG(INFO,"...")、ログ ファイルは生成されません。

于 2018-10-23T11:46:03.703 に答える