GLOG使用Demo
GLOG使用Demo
GLOG是Google开源的一个精简的日志系统,博主简单学习了一下并记录常见用法,以备日常查询
一、安装
照例是编译安装,不过没有使用cmake
git clone https://github.com/google/glog.git
cd glog
./autogen.sh
./configure
make
sudo make install
二、Demo
# CMakeLists.txt
cmake_minimum_required (VERSION 2.8.11)
project (proj)
find_package (glog)
add_executable (demo01 1.cc)
target_link_libraries (demo01 glog)
// 1.cpp
#include <glog/logging.h>
int main(int argc, char *argv[])
{
google::InitGoogleLogging(argv[0]);
google::SetLogDestination(google::INFO, "log/"); // 把日志同时记录文件,最低级别为INFO
// 通过GFLAGS来设置参数,更多选项可以在logging.cc里面查询
// 日志等级分为INFO, WARNING, ERROR, FATAL,如果是FATAL级别这直接运行报错
FLAGS_stderrthreshold = google::WARNING;
FLAGS_colorlogtostderr = true;
LOG(WARNING) << "Hello GLOG";
// 条件输出
LOG_IF(INFO, 20 > 10) << "20 > 10";
// 频率输出,本质上是通过google::COUNTER这个计数机实现的
for (int i = 0; i < 10; i++)
{
LOG_EVERY_N(ERROR, 3) << "每隔3次输出一次 " << i;
LOG_FIRST_N(ERROR, 2) << "前两次输出 " << i;
LOG_IF_EVERY_N(WARNING, 1 < 2, 2) << "条件输出+频率" << google::COUNTER;
}
google::ShutdownGoogleLogging();
}
三、编译运行
mkdir build
cd build
mkdir log # 存放日志的目录
cmake ..
make
./demo01
四、运行结果
命令行结果(事实上不同等级的日志会有不同的颜色)
W1110 12:00:49.353030 3474011072 1.cc:13] Hello GLOG
E1110 12:00:49.355512 3474011072 1.cc:19] 每隔3次输出一次 0
E1110 12:00:49.355850 3474011072 1.cc:20] 前两次输出 0
W1110 12:00:49.355880 3474011072 1.cc:21] 条件输出+频率1
E1110 12:00:49.355916 3474011072 1.cc:20] 前两次输出 1
W1110 12:00:49.355944 3474011072 1.cc:21] 条件输出+频率3
E1110 12:00:49.355969 3474011072 1.cc:19] 每隔3次输出一次 3
W1110 12:00:49.356000 3474011072 1.cc:21] 条件输出+频率5
E1110 12:00:49.356024 3474011072 1.cc:19] 每隔3次输出一次 6
W1110 12:00:49.356053 3474011072 1.cc:21] 条件输出+频率7
W1110 12:00:49.356077 3474011072 1.cc:21] 条件输出+频率9
E1110 12:00:49.356101 3474011072 1.cc:19] 每隔3次输出一次 9
同时在log目录下会有日志文件
➜ build tree log/
log/
├── 20181110-115213.48624
├── 20181110-115249.48650
├── 20181110-120049.48867
└── demo01.INFO -> 20181110-120049.48867 # demo01.INFO会软链到最新的日志
五、小结
现在日益感觉到日志的重要性,感觉GLOG设计的非常精妙,代码也比较明了,但官网的文档比较简单,更多功能可以直接读源码
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
2017-11-10 NodeJS 模块&函数
2017-11-10 NodeJS Stream流
2017-11-10 NodeJS缓冲区
2017-11-10 Node回调&事件
2017-11-10 Node辅助工具NPM&REPL