Я заинтересован в том, чтобы использовать некоторые журналы, чтобы помочь мне обнаружить потенциальные проблемы в моем коде и определить, где произошла ошибка моей программы.Моя проблема в том, что используемая мной библиотека (google glog) не регистрирует вещи, если они происходят непосредственно перед сбоем программы.Поэтому я попытался сделать что-то вроде этого (это шаблон для 3 аргументов):
mutex logMtx;
template<class T, class U, class V>
void mutexLOG_INFO(T t, U u, V v)
{
stringstream ss;
ss<<t;
ss<<u;
ss<<v;
LOG(INFO)<<ss.str();
mutex::scoped_lock sl(logMtx);
google::FlushLogFiles(0);
}
Это работает AFAIK (из моего тестирования), но, как вы можете видеть, это не очень хорошо, потому что мне нужносделать свою собственную функцию для каждого уровня (INFO, WARNING ..) и для каждого количества параметров.Также я ненавижу заново изобретать колесо.
Так есть ли способ сказать, что glog сбрасывается каждый раз после LOG?
PS Я знаю, что это g-log, а не g-db (упс, имя взято :) но я предпочитаю иметь возможность красиво печатать свои данные STL, я использую gdb только для определения того, где что-то умерло.
РЕДАКТИРОВАТЬ: SO еще раз доказывает, что это отличный источник информации:
#include <glog/logging.h>
#include <**gflags**/gflags.h>
...
FLAGS_logbuflevel=-1;