深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例
文章目录
- 深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例
- 1. GLOG_minloglevel:最低日志等级控制
- 2. GLOG_v:控制 VLOG() 的详细输出等级
- 3. GLOG_minloglevel 与 GLOG_v 的优先级关系
- 4. 使用示例
- 4.1 基础示例:不同日志等级
- 4.2 VLOG 详细日志示例
- 5. 小结
深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例
在使用 Google 的 glog 日志库时,两个非常重要的参数是 GLOG_minloglevel 和 GLOG_v。虽然它们看似类似,都与日志输出控制有关,但实际上作用范围和优先级是不同的。
本文将带你深入理解它们的区别、优先级以及如何正确使用,并给出实用示例。
1. GLOG_minloglevel:最低日志等级控制
GLOG_minloglevel 决定了日志的最低输出等级,低于这个等级的日志将不会被打印。
-
可选值:
值 日志等级 说明 0 INFO 信息(默认值) 1 WARNING 警告 2 ERROR 错误 3 FATAL 致命错误 -
作用:
比如,当设置GLOG_minloglevel=2时,INFO和WARNING等级的日志将不会输出,只输出ERROR和FATAL日志。 -
示例:
./your_program --minloglevel=1只输出
WARNING、ERROR和FATAL日志。
2. GLOG_v:控制 VLOG() 的详细输出等级
GLOG_v 用于控制VLOG(n) 日志的输出详细程度。
-
默认值:
0 -
作用:
只有当GLOG_v >= n时,VLOG(n)这条日志才会被输出。举例来说:
- 设置
GLOG_v=1,则VLOG(0)和VLOG(1)会输出,VLOG(2)则不会。 - 设置
GLOG_v=3,则VLOG(0)~VLOG(3)的日志都会输出。
- 设置
-
示例:
./your_program --v=2会输出
VLOG(0)、VLOG(1)和VLOG(2)。
3. GLOG_minloglevel 与 GLOG_v 的优先级关系
-
先判断 GLOG_minloglevel
如果当前日志级别低于GLOG_minloglevel,直接丢弃,不管GLOG_v设置是多少。 -
再判断 GLOG_v
VLOG(n)日志是INFO级别的日志,因此只有在GLOG_minloglevel <= 0时,VLOG(n)才有可能输出。 -
总结表格:
GLOG_minloglevel GLOG_v 是否输出 VLOG(n) 日志 0(默认) 任意值 可以输出(根据 v 等级) 1 任意值 不输出(INFO 被屏蔽) 2 任意值 不输出 3 任意值 不输出
4. 使用示例
4.1 基础示例:不同日志等级
#include <glog/logging.h>int main(int argc, char* argv[]) {google::InitGoogleLogging(argv[0]);LOG(INFO) << "普通信息日志"; // INFO 级别LOG(WARNING) << "警告信息"; // WARNING 级别LOG(ERROR) << "错误信息"; // ERROR 级别// LOG(FATAL) << "致命错误"; // 程序会在输出后终止return 0;
}
运行:
./your_program --minloglevel=1
输出:
WARNING: 警告信息
ERROR: 错误信息
(INFO 被屏蔽)
4.2 VLOG 详细日志示例
#include <glog/logging.h>int main(int argc, char* argv[]) {google::InitGoogleLogging(argv[0]);VLOG(0) << "VLOG 详细等级 0";VLOG(1) << "VLOG 详细等级 1";VLOG(2) << "VLOG 详细等级 2";return 0;
}
运行:
./your_program --minloglevel=0 --v=1
输出:
VLOG 详细等级 0
VLOG 详细等级 1
(VLOG(2) 不输出,因为 v=1)
如果设置:
./your_program --minloglevel=1 --v=3
则不会有任何 VLOG 输出,因为 minloglevel=1 已经屏蔽了 INFO 日志(包括 VLOG)。
5. 小结
- GLOG_minloglevel 控制输出日志的最低级别。
- GLOG_v 控制
VLOG(n)级别日志的详细程度。 - 优先级:
GLOG_minloglevel优先于GLOG_v。 - 开发调试时,建议设置
--minloglevel=0 --v=2以获取较详细的调试信息。 - 正式发布时,通常设置
--minloglevel=1或更高,关闭低优先级日志输出。
相关文章:
深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例
文章目录 深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例1. GLOG_minloglevel:最低日志等级控制2. GLOG_v:控制 VLOG() 的详细输出等级3. GLOG_minloglevel 与 GLOG_v 的优先级关系4. 使用示例4.1 基础示例:不同日志等级4.2…...
Unity6下架中国区,团结引擎接棒:这是分裂,还是本地化的开始?
就在近日,一则消息在国内游戏开发圈内迅速传播开来:Unity 6 及其后续版本已在中国大陆及港澳地区下架。这意味着,未来中国用户将无法直接使用 Unity 最新的主线版本。而取而代之的,是由 Unity 中国主导推出的本地化产品 —— 团结…...
ESP8266水位监测以及温湿度数据采集
上面就是ESP8266的引脚图,水温检测使用的是水位监测传感器,温湿度测量使用的是DHT11,DHT11的反应时间是2秒,这里要注意。开发采用Arduino程序 1. 传感器初始化 功能:初始化DHT11温湿度传感器和串口通信。 代码实现&…...
国产信创数据库:PolarDB 分布式版 V2.0,支持集中分布式一体化
阿里云PolarDB数据库管理软件(分布式版)V2.0 ,安全可靠的集中分布式一体化数据库管理软件。点此查看详情https://www.aliyun.com/activity/database/polardbx-v2?spma2c6h.13046898.publish-article.8.44146ffaE0lEWT 立即咨询专家…...
iOS按键精灵辅助工具在游戏开发中的创新应用
一、iOS自动化测试辅助工具 在移动游戏开发领域,iOS按键精灵类辅助工具不同于传统的安卓自动化方案,iOS环境下的自动化测试面临更严峻的技术挑战,但通过创新方法仍可实现精准控制。 # 基于图像识别的智能定位算法示例 def find_button(butt…...
淘宝 API 与 AI 图像识别整合:开启商品主图智能解析新时代
在电商蓬勃发展的当下,淘宝作为行业巨头,承载着海量的商品信息。如何让买家更高效地筛选心仪好物,让卖家精准把握商品展示要点?淘宝 API 与 AI 图像识别技术的整合为这一难题提供了创新性解法,实现对商品主图实时解析&…...
Axure PR 9 中继器 09 删除行
大家好,我是大明同学。 接着上期的内容,这期内容,我们来了解一下Axure中继器数据表删除行交互设计。 预览地址:https://vvlmqu.axshare.com 删除行 1.打开上期RP 文件,设计一个删除弹窗元件, 创建为动态面…...
HDCP(五)
HDCP 2.2 测试用例设计详解 基于HDCP 2.2 CTS v1.1规范及协议核心机制,以下从正常流程与异常场景两大方向拆解测试用例设计要点,覆盖认证、密钥管理、拓扑验证等关键环节: 1. 正常流程测试 1.1 单设备认证 • 测试目标:验证源设…...
商城APP打包教程
下载 HBuilderX 工具 HBuilderX支持插件拓展功能。App开发版已集成相关插件、开箱即用 根据自身电脑系统选择对应软件下载,建议选择APP开发版 2. 下载好软件安装后打开 建议直接在uniapp插件页面一键导入,正常情况下uniapp插件都是最新的,大家…...
Spring 框架的核心基础:IoC 和 AOP
一、IoC(Inversion of Control,控制反转) 定义: IoC(Inversion of Control,控制反转),就是把对象创建和依赖关系的管理交给 Spring 容器,而不是由程序员手动去创建对象…...
SpringBoot 基础知识,HTTP 概述
1. 概述 1.1 Spring Spring 提供若干个子项目,每个项目用于完成特定功能 Spring 的若干个子项目都基于一个基础的框架:Spring Framework 框架类似于 房屋的地基 但 Spring Framework 配置繁琐,入门难度大 1.2 Spring Boot 于是…...
《网络管理》实践环节04:SNMP监控数据采集流程及SNMP协议详细分析
兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 1 实验目标 1. 理解SNMP网络管理原理 2. 掌握SNMP服务器采集SNMP Agent数据的方法 3. 掌握SNMP报文发送和应答流程 4. 掌握典型GetResponsePDU数据结构分析的方法 4. 具备SNMP通信…...
RTX30系显卡运行Tensorflow 1.15 GPU版本
30系显卡只支持cuda11.0及以上版本,但很多tensorflow项目用的仍然是1.1x版本,这些版本需要cuda10或者以下版本,这就导致在30系显卡上无法正常运1.1x版本的tensorflow,最近几天我也因为这个问题头疼不已,网上一番搜索…...
debian系统中文输入法失效解决
在 Debian 9.6 上无法切换中文输入法的问题通常与输入法框架(如 Fcitx 或 IBus)的配置或依赖缺失有关。以下是详细的解决步骤: 1. 安装中文语言包 确保系统已安装中文语言支持: sudo apt update sudo apt install locales sudo…...
《Uniapp-Vue 3-TS 实战开发》构建HTTP请求拦截器
引言 在 UniApp 结合 TypeScript 和 Vue3 的项目开发中,请求拦截器起着至关重要的作用。它能够在请求发送前和响应接收后对数据进行统一处理,极大地提高了代码的可维护性和功能性。本文将详细解析上述代码中请求拦截器的实现及其在 UniApp-Ts-Vue3 项目中…...
C#基础类型系统-接口
接口 - 定义多种类型的行为 接口包含非抽象 class 或 struct 必须实现的一组相关功能的定义。接口可以定义 static 方法,此类方法必须具有实现。接口可为成员定义默认实现。接口不能声明实例数据,如字段、自动实现的属性或类似属性的事件。C#不支持类的…...
StringTemplate修仙指南:字符串处理的“言出法随“大法
各位在字符串处理苦海中挣扎的道友们!今天要解锁的是StringTemplate这门"言出法随"的绝学——用模板语法让字符串替换变得优雅如诗!无论是代码生成、邮件模板还是动态SQL,都能一键搞定!准备好告别String.format()的混沌…...
从PDF中提取表格:以GB/T2260—2007为例
文章目录 先说结论前因后果思路1、PDF2CSV2、PDF2MD → MD2CSV3、针对不同表格的两种思路1) 竖形三线表2)五元素为一组 还没结束批量处理1、分割markdown文档2、跳过另一种格式的文档 总结一下 先说结论 结论就是,博主用了一天的时间去研究如…...
初识MySQL · 复合查询(内外连接)
目录 前言: 基本查询回顾 笛卡尔积和子查询 笛卡尔积 内外连接 子查询 单行子查询 多行子查询 多列子查询 from中使用子查询 合并查询 前言: 在前文我们学习了MySQL的基本查询,就是简单的套用了select语句,最多不过是…...
电视剧角色扮演AI Agent中的大模型操作流程
电视剧角色扮演AI Agent中的大模型操作流程 在您描述的 “电视剧角色扮演 + 挑战任务” 的AI Agent场景中,大模型(如GPT-4、Claude等)需要完成多个关键操作,以下是详细的技术流程分解: 1. 用户输入处理阶段 操作:文本向量化(Embedding) 技术实现: 使用 文本嵌入模型…...
Android学习总结之数据结构篇
Java 的集合体系 Java 的集合框架主要分为两大接口体系:Collection 和 Map。以下是对这两大体系下常见集合类的介绍: Collection 体系 Collection 是单列集合的根接口,它有三个主要的子接口:List、Set 和 Queue。 List 接口&a…...
OpenCV--图像平滑处理
在数字图像处理领域,图像平滑处理是一项极为重要的技术,广泛应用于计算机视觉、医学影像分析、安防监控等多个领域。在 OpenCV 这一强大的计算机视觉库的助力下,我们能便捷地实现多种图像平滑算法。本文将深入探讨图像平滑的原理,…...
8. git branch
基本概述 git branch 的作用是:查看、创建、删除、重命名和跟踪分支等。 查看分支 1.查看本地分支 git branch当前分支前会标记 * 2.查看远程分支 git branch -r3.查看所有分支 git branch -a4.查看分支信息 git branch -v会显示分支的最新提交信息 5.查看…...
辛格迪客户案例 | 北京舒曼德医药实施电子合约系统(eSign)
01 北京舒曼德医药科技开发有限公司:医药科技的数字化先锋 北京舒曼德医药科技开发有限公司(以下简称“舒曼德医药”)作为国内医药科技领域的领军企业,致力于创新药物的研发、临床试验和市场推广。公司以“科技兴药、质量为先、服…...
Python面向对象-开闭原则(OCP)
1. 什么是开闭原则? 开闭原则(Open-Closed Principle, OCP) 是面向对象设计的五大SOLID原则之一,由Bertrand Meyer提出。其核心定义是: “软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。” 对扩展开放:当需求…...
网络安全-等级保护(等保) 1-0 等级保护制度公安部前期发文总结
################################################################################ 等级保护从1994年开始已经有相关文件下发,进行建设,后续今年多年制度完善,现在已进入等保2.0时代,相关政策已运行多年。 前期等保相关发文,目前还在使用的包括:《中华人民共和国计算…...
Class 文件和类加载机制
一、Class 文件 与 类加载机制 概述 什么是 Class 文件? Java 源码(.java)经过 javac 编译器 编译生成的字节码文件(.class);由 JVM 识别执行,包含类的完整结构信息(如字段、方法、…...
Vue3+Vite+TypeScript+Element Plus开发-07.Mockjs引用与Axios封装
系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 Pinia持久化 动态路由-配置 文章目录 目录 系列文档目…...
安全理念和安全产品发展史
从安全理念的发展历史来看,技术与产品的演进始终围绕 “威胁对抗” 与 “业务适配” 两大核心展开。以下从七个关键阶段解析安全技术与产品的发展脉络,并结合最新实践与未来趋势提供深度洞察: 一、密码学奠基阶段(1970s 前) 安全理念:以 “信息保密” 为核心,防御手段…...
【Redis】背景知识
一、Redis的特性 Redis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串),hash(哈希),list…...
