【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.

以上。
相关文章:
【C++】开源:glog日志库配置使用
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍glog日志库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次…...
使用 React Native CLI 创建项目
React Native 安装的先决条件和设置 需要掌握的知识点 掌握 JavaScript 基础知识掌握 React 相关基础知识掌握 TypeScript 相关基础知识 安装软件前需要首先安装Chocolatey。Chocolatey 是一种流行的 Windows 包管理器。 安装 nodejs 和 JDK choco install -y nodejs-lts …...
在R中将列表(list)转换为向量(vector)
问题:将列表中的所有元素“展平”,赋值给一个向量 解决方案:使用unlist()函数; 在许多情况下需要向量,例如,baseR中的许多统计函数需要一个向量作为输入,例如,如果iq.score是一个包…...
access怎么做进销存?借助access开发进销存管理应用
我不太推荐使用Access,因为他的缺点还是比较明显的: 1、软件自身限制 不能用于互联网:使用Access制作好的管理软件,访问页只能在局域网中使用;只能在Windows上运行:Access仅支持windows的运行环境&#x…...
css实现卡片的左上角有一个三角形的遮盖效果
需求: 卡片的左上角有一个绿色的三角形标签,用来区分状态 实现: .vCard{position: relative;overflow: hidden; } .vCard::before {content: "";position: absolute;top: 0;left: 0;width: 0;height: 0;border-bottom: 20px solid transparent;border-left: 20px …...
中间件RabbitMQ消息队列介绍
1. MQ的相关概念 1.1 什么是MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息…...
MySQL不知道密码,直接修改密码
很简单,我们跳过验证,直接进去修改就好 修改配置文件 vim /etc/my.cnf在[mysqld]下直接添加配置 skip-grant-tables如图: 保存,退出即可。 重启服务 service mysqld restart进入MySQL #(直接点击回车,密码为空)…...
Win10关闭自动更新的方法和影响(Windows modules installer worker cpu占用过高)
目录 问题描述: Windows modules installer worker是什么? Win10关闭自动更新的方法: Win10关闭自动更新的影响: 问题描述: 有时我们在使用电脑的过程中会突然出现电脑运行过慢,发热,风扇噪…...
Xcode 基座打包
Xcode基座打包-APP更新版本内容无效 问题:解决: 问题: 使用xcode基座打包之后,上传到appstore进行提审发布。 用户在appstore商城进行更新下载,打开更新后的APP发现版本号是最新的,APP里面的其他内容还是上…...
最强自动化测试框架Playwright(9)- 下载文件
对于页面下载的每个附件,都会发出 page.on(“download”) 事件。 下载开始后,将发出下载事件。下载完成后,下载路径将变为可用 所有这些附件都下载到一个临时文件夹中。可以使用事件中的下载对象获取下载 URL、文件系…...
python爬虫实战(1)——网站小说
整本小说的爬取保存 目标大致思路页面的爬取解析—XPath请求网页内容解析网页内容正文爬取与解析单个页面数据获取爬取所有页面 数据清洗 经过学习基础,我们学以致用一下子,爬取小说,注意这个小说本身是免费的哦,以后再进阶。 本次…...
git: ‘lfs‘ is not a git command. see ‘git --help‘
在克隆hugging face里面的项目文件的时候,需要用到git lfs,本文介绍安装git lfs方法 在Ubuntu下 curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash sudo apt-get install git-lfs在Windows下 到这个链…...
python案例
这猜单词游戏。具体步骤如下: 导入random模块,用于随机选择单词。 设置初始生命次数为3。 创建一个单词列表words,其中包含了一些单词。 使用random.choices()函数从单词列表中随机选择一个单词作为秘密单词secret_word。 创建一个clue列表&a…...
leetcode 63. 不同路径 II
2023.8.9 这题是不同路径I的升级版,在路径上增加了障碍物,有障碍物的地方无法通过。 我的思路依然还是使用动态规划,dp[i][j]的含义依然是到(i,j)这个位置的路径个数。只需要在dp数组中将有障碍物的地方赋为…...
c语言每日一练(5)
前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…...
pycharm配置conda虚拟环境
📕作者简介:热编程的贝贝,致力于C/C、Java、Python等多编程语言,热爱跑步健身,喜爱音乐的一位博主。 📗本文收录于贝贝的日常汇报系列,大家有兴趣的可以看一看 📘相关专栏深度学习、…...
ubuntu 如何命令行打开系统设置(Wifi,网络,应用程序...)
关于GNOME GNOME 是一个自由、开放源代码的桌面环境,它运行在 Linux 和其他类 UNIX 操作系统上。它是 GNU 项目的一部分,旨在为 Linux 操作系统提供一个现代化、易于使用的用户界面。 GNOME 桌面环境包括许多应用程序,例如文件管理器、文本编…...
MySQL DQL 数据查询
文章目录 1.SELECT 语句2.SELECT 子句3.FROM 子句4.WHERE 子句5.GROUP BY 子句6.HAVING 子句7.ORDER BY 子句8.LIMIT 子句9.DISTINCT 子句10.JOIN 子句11.UNION 子句12.查看数据表记录数13.检查查询语句的执行效率14.查看 SQL 执行时的警告参考文献 1.SELECT 语句 MySQL 的 SE…...
深度学习基础知识笔记
深度学习要解决的问题 1 深度学习要解决的问题2 应用领域3 计算机视觉任务4 视觉任务中遇到的问题5 得分函数6 损失函数7 前向传播整体流程8 返向传播计算方法1 梯度下降 9 神经网络整体架构11 神经元个数对结果的影响12 正则化和激活函数1 正则化2 激活函数 13 神经网络过拟合…...
怎么系统的学习机器学习、深度学习?当然是看书了
目录 前言 内容简介 学完本书,你将能够 作者简介 本书目录 京东自购链接 前言 近年来,机器学习方法凭借其理解海量数据和自主决策的能力,已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。自从Ale…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
