Verbose日志不适用与于划分级别的日志记录,意思就是说在设置了标记:LoggingFlag::HierarchicalLoggin的日志记录中,即使阀值设置大于Verbose级别,甚至是设置成Unknown,也无法关闭Verbose级别日志的输出。同时,Verbose日志拥有专属的宏定义来记录日志,而不支持类似于LOG(VERBOSE)等宏定义。下面列出Verbose日志专属的宏定义:
- VLOG(verbose-level)
- CVLOG(verbose-level, loggerID)
- VLOG_IF(condition, verbose-level)
- CVLOG_IF(condition, verbose-level, loggerID)
- VLOG_EVERY_N(n, verbose-level)
- CVLOG_EVERY_N(n, verbose-level, loggerID)
- VLOG_AFTER_N(n, verbose-level)
- CVLOG_AFTER_N(n, verbose-level, loggerID)
- VLOG_N_TIMES(n, verbose-level)
- CVLOG_N_TIMES(n, verbose-level, loggerID)
提示:Verbose日志同样支持DEBUG模式,上述所有宏定义都有与之对应的DEBUG模式的宏定义,在签名加上大写字母D即可。
理解Verbose日志的级别
Verbose日志可以分为1~9共九个级别,而这九个级别最初是处于未激活状态的。所谓的未激活状态就是说在默认的情况下,这九个级别的Verbose日志是不会输出日志信息的,除非我们设置程序参数来激活它。而VLOG(0)虽然也可以记录Verbose日志,但是它在默认的情况下是可以输出日志信息的,所以0并不属于Verbose日志的级别。不过实践发现,即使把0理解成Verbose日志的级别也可以,即可以认为Verbose日志分为0-9共十个级别,只是0级别的日志是无法被禁止输出的,但是在vmodule分模块日志部分内容演示代码中有一种方法可以把VLOG(0)的输出也禁用了。
设置Verbose日志的级别
在命令行参数中, -v 、 --verbose 、--v 、 -vmodule 都是用来设置Verbose日志的,这四个参数只能有一个生效,优先级高的会覆盖优先级低的(优先级: -v > --verbose > --v &