Изменить каталог журналов Glog связанной библиотеки

У меня есть приложение, которое использует Glog. Я могу использовать переменные среды или Gflags, чтобы изменить каталог журналирования этого приложения. В этом приложении я ссылаюсь на другую библиотеку, которая также использует Glog. То, как я изменил каталог журналирования приложения, также не меняет каталог журналирования этой связанной библиотеки. Кто-нибудь знает, как изменить каталог ведения журнала Glog связанной библиотеки?

РЕДАКТИРОВАТЬ:

В моем основном исполняемом файле для приложения я начинаю с:

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

Переменная среды GLOG_log_dir установлена ​​в папку в каталоге моего приложения. Сразу же я могу начать использовать такие строки из моего основного исполняемого файла:

if(!FLAGS_localizer) {
    LOG(INFO) << "Localizer not initialized. To initialize, use parameter -localizer";
}

Когда я иду в указанную папку журнала, я вижу файл как gui.engr2-13-197-dhcp.int.colorado.edu.username.log.INFO.20160511-124903.19677 который содержит все LOG(INFO) звонки в моем приложении. Теперь у меня есть одна связанная библиотека (коммуникационный подуровень), которая содержит вызовы Глога, и все эти вызовы правильно записаны в ту же самую ..log.INFO... файл, который я мог посмотреть выше. Поскольку регистрация ведется из разных файлов, файл журнала выглядит следующим образом:

I0511 12:49:03.570866 1955471360 gui.cpp:31] Localizer not initialized. To initialize, use parameter -localizer

из моего основного исполняемого файла и вот так:

I0511 12:49:08.030144 1955471360 Node.cpp:1050] Found 1 URLs for nodes
I0511 12:49:08.030184 1955471360 Node.cpp:1057] node at 10.201.13.197:5555
I0511 12:49:08.030200 1955471360 Node.cpp:1085] Connecting to 10.201.13.197:5555
I0511 12:49:08.030308 1955471360 Node.cpp:1095] 'MochaGui' connected to remote node: 10.201.13.197:5555

из моей связанной библиотеки, которая работает. У меня есть другая связанная библиотека (та, которая вызывает проблему), которая связана в cmake так же, как и рабочая связанная библиотека, за исключением того, что ее вызовы Glog вообще не записываются в этот файл журнала. Я ожидаю, что они будут выглядеть одинаково, но заголовок [IO511 <time> Localizer.cpp:<lineNo>]вместо того же с "Node.cpp" (Node - это рабочая связанная библиотека). Например, я использую мою (нерабочую) связанную библиотеку для инициализации Локализатора следующим образом:

Localizer::Localizer()
{
    //FLAGS_log_dir = "/Users/username/Documents/ARPGDependencies/MochaGui/logs";
    //google::InitGoogleLogging("Localizer");
    m_bIsStarted = false;
    m_pNode = new node::node;
    m_pNode->init("commander_node");
    if( m_pNode->advertise("command") == false ){
        LOG(ERROR) << "Error setting up publisher.";
    }
    LOG(INFO) << "New Localizer created.";
}

Я попытался вручную установить каталог журнала для этого конкретного объекта, но эти строки были закомментированы, потому что это не имело никакого эффекта. Я знаю, что этот конструктор вызывается, потому что я вызываю его в заголовочном файле приложения следующим образом:

Localizer m_Localizer;

Но LOG(INFO) << "New Localizer created."; не может быть найден нигде в создаваемых файлах журнала. Поэтому мой вопрос: как мне заставить эту библиотеку выводить свои операторы Glog в тот же файл, что и остальная часть приложения? Я также прочесал источник для каждой связанной библиотеки и не нашел различий в том, как Глог включен и используется. В обоих, #include <glog/logging.h> называется, а затем Глог LOG(<severity>) звонки сразу используются.

1 ответ

Оказывается, это была проблема с тем, как QtCreator обрабатывает зависимости. Когда я обновлял их, он не собирал библиотеки в правильный каталог, поэтому исполняемый файл никогда не создавался с использованием операторов Glog.

Другие вопросы по тегам