2013-09-22 3 views
4

Я использую библиотеку 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

Как любой асинхронный регистратор, он будет скрываться только для сообщений о приоритете, вы должны позвонить google::LogMessage::Flush(), чтобы написать все сообщения на выходе.

+0

Вау, большое спасибо за простой и очень быстрый ответ ... он решил мою проблему. Кстати, где я могу узнать больше об этом? Я вижу только это http://google-glog.googlecode.com/svn/trunk/doc/glog.html. Есть ли что-то еще? –

+1

К сожалению, это единственный доступный документ, насколько мне известно, отсутствие флеша - очень распространенная проблема при использовании буферизованного ввода-вывода. –

Смежные вопросы