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设计的非常精妙,代码也比较明了,但官网的文档比较简单,更多功能可以直接读源码

posted @   潇雨危栏  阅读(1590)  评论(0编辑  收藏  举报
编辑推荐:
· 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
点击右上角即可分享
微信分享提示