有几个标志影响glog的输出行为。有启动参数和代码两种方式进行标识设置。
在启动参数中设置标识
如果编译 glog 时使用了 gflags 库,那么可以通过参数的形式进行标识设置:
./your_application --logtostderr=1
如果没有使用,则可以通过环境变量设置标志,在标志名前加上 GLOG_ ,例如:
GLOG_logtostderr=1 ./your_application
一些常用的标识如下:
- logtostderr (bool, default=false): 将消息记录到stderr而不是日志文件。
注意:您可以通过指定1、true或yes(不区分大小写)将二进制标志设置为true。此外,您可以通过指定0、false或no(同样,不区分大小写)将二进制标志设置为false。 - stderrthreshold (int, default=2, which is ERROR):除日志文件外,还将此级别或更高级别的日志消息复制到stderr。
INFO、WARNING、ERROR、FATAL的严重级别分别为0、1、2、3。 - minloglevel (int, default=0, which is INFO):在此级别或更高级别记录消息。
INFO、WARNING、ERROR、FATAL的严重级别分别为0、1、2、3。 - log_dir (string, default=“”):如果指定,则将日志文件写入此目录而不是默认日志记录目录。
- v (int, default=0):显示小于或等于该标志值的所有VLOG(m)消息。可被 --vmodule 覆盖。详见:the section about verbose logging
- vmodule (string, default=“”):每个模块的详细级别。参数必须包含一个逗号分隔的列表
<module name>=<log level>.<module name>是一个glob模式(例如,gfs*适用于所有名称以“gfs”开头的模块),与基本文件名匹配,忽略后缀(即忽略.cc/.h/-inl.h)。<log level>覆盖 --v 允许的任何值。详见: the section about verbose logging
在logging.cc中还定义了一些其他标志。执行DEFINE_的源代码以查看所有标志的完整列表。
在代码中设置标识
还可以通过修改全局变量 FLAGS_* 来修改程序中的标志值。大多数设置在更新 FLAGS_* 后立即开始工作。
要注意的是与目标文件相关的标志。例如,你需要在调用google::InitGoogleLogging 之前设置 FLAGS_log_dir 。下面是一个例子:
google::InitGoogleLogging(argv[0]);
LOG(INFO) << "file";
// 大多数 flag 会在修改值之后立刻生效
FLAGS_logtostderr = 1;
LOG(INFO) << "stderr";
FLAGS_logtostderr = 0;
// 但是,在这里修改日志存储路径,不会起效。你需要在 google::InitGoogleLogging 之前就设置.
FLAGS_log_dir = "/some/log/directory";
LOG(INFO) << "the same file";
2383

被折叠的 条评论
为什么被折叠?



