GLOG只保存一条,第一条消息

时间:2013-09-22 18:45:32

标签: c++ windows logging visual-studio-2012 glog

我正在使用glog库,但是我在打印多封邮件时遇到问题。

当我使用此代码时:

std::string appPath = TUtil::ExePath() + "logs\\";
google::SetLogDestination(google::GLOG_INFO, std::string(appPath + "INFO").c_str());
google::SetLogDestination(google::GLOG_ERROR, "");
google::SetLogDestination(google::GLOG_FATAL, "");
google::SetLogDestination(google::GLOG_WARNING, "");

google::InitGoogleLogging("");

LOG(INFO) << "Info1";
LOG(INFO) << "Info2";
LOG(WARNING) << "Warning1";
LOG(ERROR) << "ERROR1";
//LOG(FATAL) << "FATAL1";

我收到了这个日志文件(你可以看到除了第一个消息之外它没有所有消息):

Log file created at: 2013/09/22 20:22:03
Running on machine: XXX
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I0922 20:22:03.047548  9512 test.cpp:36] Info1

然而,当我取消注释LOG(FATAL)时,它会打印所有消息:

Log file created at: 2013/09/22 20:39:52
Running on machine: XXX
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I0922 20:39:52.060691 34104 test.cpp:36] Info1
I0922 20:39:52.063691 34104 test.cpp:37] Info2
W0922 20:39:52.063691 34104 test.cpp:38] Warning1
E0922 20:39:52.063691 34104 test.cpp:39] ERROR1
F0922 20:39:52.066692 34104 test.cpp:40] FATAL1

我完全不知道是什么原因引起的。它很简单 - 当我打印fatal日志消息时,它(以及它之前的所有内容)被打印到文件中。但是当没有fatal消息时,只打印第一个消息。

有没有人遇到类似的问题,或者知道如何解决?

2 个答案:

答案 0 :(得分:2)

作为任何异步记录器,它只会刷新优先级消息,您必须调用google::LogMessage::Flush()将所有消息写入输出。

答案 1 :(得分:2)

FLAGS_logbufsecs = 0;为我解决问题。但它可能有一些性能问题。 https://code.google.com/p/google-glog/issues/detail?id=52&can=1&q=flush