Изменить каталог ведения журнала 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) в моем приложении. Теперь у меня есть одна связанная библиотека (коммуникационный подуровень), которая содержит вызовы Glog, и все эти вызовы правильно записаны в тот же файл ..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::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 в тот же файл, что и остальная часть приложения? Я также просмотрел исходный код для каждой связанной библиотеки и не нашел различий в том, как Glog включается и используется. В обоих вызывается #include <glog/logging.h>, а затем сразу же используются вызовы Glog LOG(<severity>).


person cosa0481    schedule 11.05.2016    source источник
comment
Что вы пробовали до сих пор. Пожалуйста, разместите свой код, и мы будем рады помочь!   -  person toesslab    schedule 11.05.2016
comment
Кроме того, все, что говорит Glog, это то, что по умолчанию все файлы журналов записываются во временный каталог, но просмотр моего источника Glog не обнаруживает каталогов, которые я могу найти. И добавление флага --logtostderr=1 не меняет того факта, что моя связанная библиотека не пишет в то же место, что и остальная часть моего приложения.   -  person cosa0481    schedule 11.05.2016


Ответы (1)


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

person cosa0481    schedule 12.05.2016