当前位置: 首页 > news >正文

【C++】开源:glog日志库配置使用

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍glog日志库配置使用。
无专精则不能成,无涉猎则不能通。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 项目介绍
    • :blush:2. 环境配置
    • :satisfied:3. 使用说明

😏1. 项目介绍

项目Github地址:https://github.com/google/glog

glog(Google Logging Library)是由 Google 开发的 C++ 日志库。它提供了一个简单易用的接口,用于在应用程序中记录日志消息。glog 被设计为高效、可靠和线程安全的,可以广泛应用于各种 C++ 项目中。

下面是 glog 的一些主要特点和优势:

1.简单易用的接口:glog 提供了简洁明了的 API,使得开发人员可以轻松地在应用程序中记录日志消息。通过使用 LOG(INFO)、LOG(ERROR) 等宏,可以方便地输出不同级别的日志信息。

2.多级别日志:glog 支持不同级别的日志记录,包括 INFO、WARNING、ERROR、FATAL 等。通过配置日志级别,可以控制记录哪些级别及以上的日志消息。

3.日志格式化:glog 允许开发人员自定义日志消息的格式。它支持类似于 printf 的格式化字符串,可以添加变量、时间戳等信息到日志消息中。

4.完整的调用栈:glog 可以记录完整的调用栈信息,包括文件名、行号和函数名。这对于定位和调试问题非常有帮助。

5.后台线程写入:glog 使用后台线程异步写入日志文件,避免了频繁的磁盘 I/O 操作对应用程序性能的影响。

6.日志文件分割:glog 具有自动分割日志文件的功能,可以按照时间或大小进行日志文件的切换和轮转,避免了日志文件过大的问题。

7.线程安全:glog 被设计为线程安全的,可以在多线程环境中使用,而不会产生竞争条件或死锁。线程安全是通过内部使用互斥锁(mutex)来实现的。

8.支持日志级别过滤:glog 支持根据日志级别设置过滤规则,可以控制输出哪些级别的日志消息到终端或文件。

glog 是一个简单易用、高效可靠的 C++ 日志库。它具有多级别日志记录、格式化、完整调用栈、后台线程写入、日志文件分割等功能。

😊2. 环境配置

下面进行环境配置:

# apt安装
sudo apt install libgoogle-glog-dev# 源码安装
git clone https://github.com/google/glog.git
cd glog
mkdir build && cd build
cmake ..
make && sudo make install

编译运行:

g++ -o main main.cpp -lglog && ./main

😆3. 使用说明

下面进行使用分析:

glog基本使用示例:

#include <glog/logging.h>int main(int argc, char *argv[])
{// 初始化 Google Logging Library , argv[0] 是当前程序的名称google::InitGoogleLogging(argv[0]);// 设置日志输出目录FLAGS_log_dir = "./logs";// 标准错误输出FLAGS_logtostderr = true;// 设置日志级别,INFO 级别及以上的日志会被输出FLAGS_minloglevel = google::INFO;// 使用宏输出不同级别的日志LOG(INFO) << "This is an INFO level log.";LOG(WARNING) << "This is a WARNING level log.";LOG(ERROR) << "This is an ERROR level log.";// LOG(FATAL) << "This is a FATAL level log.";  // 会使程序abortreturn 0;
}
// result:
// I0811 11:25:20.819756 24411 main.cpp:18] This is an INFO level log.
// W0811 11:25:20.819849 24411 main.cpp:19] This is a WARNING level log.
// E0811 11:25:20.819866 24411 main.cpp:20] This is an ERROR level log.

在这里插入图片描述

以上。

http://www.lryc.cn/news/120737.html

相关文章:

  • 使用 React Native CLI 创建项目
  • 在R中将列表(list)转换为向量(vector)
  • access怎么做进销存?借助access开发进销存管理应用
  • css实现卡片的左上角有一个三角形的遮盖效果
  • 中间件RabbitMQ消息队列介绍
  • MySQL不知道密码,直接修改密码
  • Win10关闭自动更新的方法和影响(Windows modules installer worker cpu占用过高)
  • Xcode 基座打包
  • 最强自动化测试框架Playwright(9)- 下载文件
  • python爬虫实战(1)——网站小说
  • git: ‘lfs‘ is not a git command. see ‘git --help‘
  • python案例
  • leetcode 63. 不同路径 II
  • c语言每日一练(5)
  • pycharm配置conda虚拟环境
  • ubuntu 如何命令行打开系统设置(Wifi,网络,应用程序...)
  • MySQL DQL 数据查询
  • 深度学习基础知识笔记
  • 怎么系统的学习机器学习、深度学习?当然是看书了
  • 无涯教程-Perl - binmode函数
  • Spring Boot Maven package时显式的跳过test内容
  • 排序算法————基数排序(RadixSort)
  • leetcode做题笔记75颜色分类
  • 聊一下互联网开源变现
  • PHP日期差计算器,计算两个时间相差 年/月/日
  • 20230812在WIN10下使用python3将SRT格式的字幕转换为SSA格式
  • matlab使用教程(13)—稀疏矩阵创建和使用
  • UI美工设计的主要职责(合集)
  • 【前端二次开发框架关于关闭eslint】
  • Scractch3.0_Arduino_ESP32_学习随记_蓝牙键盘(三)