Изменить каталог журналов 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.