项目中用到了GLOG的宏,由于代码有些问题,需要调试,而后发现代码中的VLOG无法打印到屏幕,经过一番查阅资料,发现应如下设置:
以下是常用标志参数类型及其作用说明:
标志参数
类型
作用
logtostderr
bool
值为true的时候,日志信息输出到stderr,并非文件。默认值为 false。
stderrthreshold
int
严重性级别在该门限值以上的日志信息除了写入日志文件以外,还要输出到stderr。各严重性级别对应的数值:INFO—0,WARNING—1,ERROR—2,FATAL—3
默认值为2.
minloglevel
int
严重性级别在该门限值以上的日志信息才进行记录。
默认值为0.
log_dir
string
日志信息记录路径。默认为空,如果没有指定信息输出到stderr,则信息保存在"/tmp/<program name>.<hostname>.<user name>.log.<severity level>.<date>.<time>.<pid>"文件中。 (e.g., "/tmp/hello_world.example.com.hamaji.log.INFO.20080709-222411.10474").
v
int
对于使用“ VLOG(m)”(m为int型)表达式进行输出的日志信息,只在m的值小于该标志的值的时候,才进行输出。另外, 该设置可能被 vmodule标志给覆盖.默认为0.
vmodule
string
分模块(文件)设置VLOG(m)日志信息的输出基本。命令格式为以逗号分开的“<module name>=<log level>”表达式组成。其中<module name> 是“glob pattern”,支持通配符,<module name>不包括文件的扩展名(.h,.cc等)。
1,环境变量导出法:(所有标志名需添加统一前缀—“GLOG_”,不同标志语句之间以空格相隔)
我采用的设置如下:
export GLOG_log_dir=/tmp export GLOG_logtostderr=1 export GLOG_max_log_size=1 export GLOG_minloglevel=0 export GLOG_stderrthreshold=1 export GLOG_v=4其中,GLOG_minloglevel=0 经过实际验证,才可以打印VLOG。
2,命令行参数法:
一、好用
二、不好用
1.下载源码
git clone https://github.com/google/glog2下载必要的模块
sudo apt-get install autoconf automake libtool3:进入文件目录,运行下面命令安装
./autogen.sh ./configure --prefix =/home/nicholas/glog_ins make -j 24 sudo make install
测试代码:
测试代码 glog的使用简单到令人发指 现有测试程序test.cpp如下 #include <glog/logging.h> int main(int argc, char* argv[]) { google::InitGoogleLogging(argv[0]); LOG(INFO) << "info: hello world!"; LOG(WARNING) << "warning: hello world!"; LOG(ERROR) << "error: hello world!"; VLOG(0) << "vlog0: hello world!"; VLOG(1) << "vlog1: hello world!"; VLOG(2) << "vlog2: hello world!"; VLOG(3) << "vlog3: hello world!"; DLOG(INFO) << "DLOG: hello world!"; return 0; } 编译方法: g++ test.cpp -o test -L/home/nicholas/glog_ins/lib/ -lglog -I/home/nicholas/glog_ins/include/执行:先指定动态库路径
export LD_LIBRARY_PATH=/home/nicholas/glog_ins/lib:$LD_LIBRARY_PATH执行效果如下: