ведение журнала — настройка google glog и gflags для переполнения стека

Я пытался настроить Glog библиотеки журналов Google для своего приложения C ++, но не могу найти никакой информации о том, как на самом деле заставить его работать, и сообщения об ошибках менее чем полезны.

Это пример кода, который я пытаюсь выполнить, и я выполняю ./myapp --v=2, но я получаю «ОШИБКА: неизвестный флаг командной строки ‘v'». Есть ли документация для этой библиотеки, или кто-нибудь знает, как правильно ее настроить?

#include <glog/logging.h>
#include <gflags/gflags.h>

int main(int argc, char** argv) {
google::InitGoogleLogging(argv[0]);
google::ParseCommandLineFlags(&argc, &argv, true);

VLOG(1) << "I'm printed when you run the program with --v=1 or higher";
VLOG(2) << "I'm printed when you run the program with --v=2 or higher";
return 0;
}

5

Решение

GLog нужны GFlags, скомпилированные в пространстве имен «google» вместо пространства имен «gflags» по умолчанию.

Чтобы установить это пространство имен, вы должны скомпилировать и установить gflags из исходного кода и установить для переменной GFLAGS_NAMESPACE значение «google».

Вот шаги, которые я выполнил в Kubuntu 14.04 и должен быть похож на то, что вы должны делать в Mac OSX. Они поместят исходный код GFlags в / usr / local / src и установят библиотеку в / usr / local / lib&включить каталоги. Последняя команда (ldconfig) регистрирует библиотеку в системе.

cd /usr/local/src/
cp /path/to/downloaded/gflags-2.1.1.tar.gz .
sudo tar xzf gflags-2.1.1.tar.gz
cd /tmp
mkdir buildgflags
cd buildgflags
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON \
-DGFLAGS_NAMESPACE=google -G"Unix Makefiles" /usr/local/src/gflags-2.1.1/
make
sudo make install
sudo ldconfig

В качестве альтернативы вы можете применить следующий патч в исходном коде GLog (прикреплен в последнем ответе):

https://code.google.com/p/google-glog/issues/detail?id=194

Он в основном использует пространство имен gflags после включений исходных файлов модульного теста GLogs, например, так:

#ifdef HAVE_LIB_GFLAGS
#include <gflags/gflags.h>
using namespace gflags;
#endif
9

Другие решения


По вопросам рекламы [email protected]