Отключить ведение журнала LOG(INFO)

Я пытаюсь оптимизировать свою программу на С++. Он использует caffe.
При выполнении моей программы caffe выводит около 1 ГБ (!) информационных журналов каждые 15 минут. Подозреваю, что это сильно влияет на эффективность. Но я не нашел, как отключить регистрацию. В этом вопросе кто-то предложил установить FLAGS_v вручную.

С помощью следующего кода я могу отключить журналы VLOG по уровню, но журналы LOG(x) не затронуты.

Первые строки в main():

FLAGS_v = 1; //disables vlog(2), vlog(3), vlog(4)
VLOG(0) << "Verbose 0";
VLOG(1) << "Verbose 1";
VLOG(2) << "Verbose 2";
VLOG(3) << "Verbose 3";
VLOG(4) << "Verbose 4";
LOG(INFO) << "LOG(INFO)";
LOG(WARNING) << "LOG(WARNING)";
LOG(ERROR) << "LOG(ERROR)";

Выход:

WARNING: Logging before InitGoogleLogging() is written to STDERR
I0523 19:06:51.484634 14115 main.cpp:381] Verbose 0
I0523 19:06:51.484699 14115 main.cpp:382] Verbose 1
I0523 19:06:51.484705 14115 main.cpp:386] LOG(INFO)
W0523 19:06:51.484710 14115 main.cpp:387] LOG(WARNING)
E0523 19:06:51.484715 14115 main.cpp:388] LOG(ERROR)

Есть ли другой flag, о котором я не знаю? Я думаю прокомментировать каждую LOG(INFO) строку, но мне нужно более элегантное решение. (Я бы предпочел решение на С++, а не решение с флагом командной строки).


person benk    schedule 23.05.2016    source источник


Ответы (6)


Это работает в исходном коде C++.

google::InitGoogleLogging("XXX");
google::SetCommandLineOption("GLOG_minloglevel", "2");
person Qi Cai    schedule 14.08.2016

вам нужно установить переменную среды

GLOG_minloglevel=2

затем запустите исполняемый файл.

Более подробную информацию вы можете найти здесь (внизу этой страницы есть раздел при удалении LOG() из вашего кода с помощью определения макроса).

person Shai    schedule 23.05.2016
comment
есть ли способ сделать это из кода вместо установки переменной среды? Спасибо. - person rkellerm; 01.08.2016

Если вы хотите отключить журнал на уровне кода, вы можете использовать это.

Просто добавьте строку ниже в свой код C++ в src/caffe/net.cpp в методе Init и соберите caffe:

fLI::FLAGS_minloglevel=3;

Частичный вид функции, куда нужно добавить эту строку:

   template <typename Dtype>
    void Net<Dtype>::Init(const NetParameter& in_param) {

      fLI::FLAGS_minloglevel=3;


      // Set phase from the state.
      phase_ = in_param.state().phase();
      // Filter layers based on their include/exclude rules and
      // the current NetState.
      NetParameter filtered_param;
      FilterNet(in_param, &filtered_param);
      LOG(INFO) << "Initializing net from parameters: " << std::endl
                << filtered_param.DebugString();
      // Create a copy of filtered_param with splits added where necessary.
      NetParameter param;
      InsertSplits(filtered_param, &param);
      // Basically, build all the layers and set up their connections.
      name_ = param.name();

      .
      .
      .
      .

Установите уровень журнала в соответствии с вашими потребностями.

person MD. Nazmul Kibria    schedule 18.01.2018
comment
Мне этого было достаточно. Просто нужно было включить эту строку и перекомпилировать libcaffe. Большой! - person Carlos Ost; 21.01.2019

Переменная среды «GLOG_minloglevel» будет фильтровать некоторые журналы, но они были скомпилированы в ваш исполняемый файл. Если вы хотите отключить их во время компиляции, определите макрос:

"#define GOOGLE_STRIP_LOG 1"

Это комментарий в logging.h:

111 // The global value of GOOGLE_STRIP_LOG. All the messages logged to             
112 // LOG(XXX) with severity less than GOOGLE_STRIP_LOG will not be displayed.     
113 // If it can be determined at compile time that the message will not be         
114 // printed, the statement will be compiled out.                                 
115 //                                                                              
116 // Example: to strip out all INFO and WARNING messages, use the value           
117 // of 2 below. To make an exception for WARNING messages from a single          
118 // file, add "#define GOOGLE_STRIP_LOG 1" to that file _before_ including       
119 // base/logging.h                                                               
120 #ifndef GOOGLE_STRIP_LOG                                                                                                                                                                                
121 #define GOOGLE_STRIP_LOG 0                                                      
122 #endif
person Yu Kunlin    schedule 15.06.2017

Чтобы добавить к ответу Qi Cai,
если есть зависимость от библиотеки Gflags, удалите GLOG_.

google::SetCommandLineOption("minloglevel", "2");   

Каждый уровень соответствует
INFO : 0
WARNING : 1 ...

person Jaehyung Kim    schedule 24.11.2020
comment
К счастью для вас, ваш пост НЕ является комментарием. Это было бы неуместно, помечено как неответ и удалено в кратчайшие сроки. Однако вы создали приемлемый ответ со ссылкой на другой (по крайней мере, я хочу видеть это таким образом). Это разрешено. Удачи. - person Yunnosch; 24.11.2020

глог-версия

совершить d4e8eb Дата: 2021-03-02 09:59:36 +0100

#include <glog/logging.h>

FLAGS_minloglevel = 100;
person Ken    schedule 31.03.2021