我整理的关于 glog 的环境变量设置

本文介绍了如何在glog中设置环境变量以管理日志输出,包括日志目录、级别以及在Windows平台上的使用限制。特别关注了如何通过GLOG_log_dir控制日志文件位置和仅使用VLOG和LOG(ERROR)的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<2023-03-06 周一>

我整理的关于glog的环境变量设置

我期望的glog是这样的:在没有设置任何相关环境变量的情况下,它不会产生任何日志文件;当设置了某个环境变量后,可以控制比如日志的输出目录,日志等级等等。如果是windows平台,日志要支持输出到debugview

在写代码时只使用VLOGLOG(ERROR)这两个宏,glog的初始化代码为:

#define GOOGLE_GLOG_DLL_DECL
#define GLOG_NO_ABBREVIATED_SERVERITIES
#include <glog/logging.h>

class init_glog {
public:
  init_glog() {
    google::InitGoogleLogging("name");
    google::SetLogFilenameExtension(".log");
  }
};

static init_glog ig;

之所以要调用SetLogFilenameExtension(),因为如果在代码里不设置的话没法通过环境变量来配置,这样生成的日志文件后缀名会很错乱。

可以设置环境变量GLOG_log_dir指向桌面,这样生成日志文件后不用每次都跑到TEMP下去找日志文件了,直接在桌面上看,一目了然,当然这个环境变量主要还是为了查看方便。此时除了设置了GLOG_log_dir没有任何其它GLOG_环境变量,这样就只有LOG(ERROR)的文件日志和debugview日志,没有VLOG的相关日志,这点儿我能接受。

ENVfiledebugview
GLOG_v = 3YN (Y if LOG(ERROR))
GLOG_v = 3
GLOG_logtostderr = 1
NN (always)
GLOG_v = 3
GLOG_logtostderr = 0
YN (Y if LOG(ERROR))
GLOG_v = 3
GLOG_alsologtostderr = 1
YY (VLOG and LOG(ERROR)
GLOG_v = 3
GLOG_alsologtostderr = 0
YN (Y if LOG(ERROR))

注:

  1. GLOG_logtostderr表示:将日志都输出到stderr中,代表它不会生成文件日志。
  2. GLOG_alsologtostderr表示:除了生成文件日志,还会输出到stderr中。
  3. GLOV_v的值为3,表示输出所有VLOG(1)VLOG(2)VLOG(3)等等小于3的日志。
  4. 从上表可看到GLOG_logtostderrGLOG_alsologtostderr默认值为0

此外为了使glog只输出到debugview,而不生成文件日志,研究了下glog的源代码发现:要想在debugview中输出日志,则GLOG_logtostderr必须为0,则此时文件日志也必定生成,所以仅输出debugview而不生成文件日志似乎glogwindows平台上实现不了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值