【C++】CentOS环境搭建-安装C++ spdlog日志库

前言

C++中的日志库有很多,以下是其中比较知名的一些:

  1. spdlog:Speed + Log,是一个高速异步日志库,支持多线程和旋转文件日志,适合用于高负载的系统。
  2. glog:Google出品,提供了多种级别的日志输出、多个日志目录的分布式日志存储、快速同步日志到磁盘等功能。
  3. Boost.Log:由Boost库提供的日志记录工具,支持多个不同的后端日志器,可以定制多种记录格式。
  4. log4cxx(log4cplus):Apache开发的一个C++日志库,设计灵活,可通过配置文件进行调整,同时也支持多种输出方式。
  5. Poco.Log:Poco库的LOG模块,结构简单,易于集成到其他应用程序中,支持多个日志记录器和过滤器。
1、spdlog

spdlog是一个C++的日志库,它的名字来源于Speed + Log的组合,因此主打高性能与易用性。以下是spdlog的一些特点:

异步记录:使用异步日志记录,可以在保证性能的同时,避免了IO阻塞,提高系统资源利用率。

循环缓冲区:使用固定大小的循环缓冲区,可避免内存泄漏和重复分配内存以及减少磁盘I/O散乱度,进一步提高速度和效率。

多线程支持:spdlog支持多线程日志记录,线程安全且无需加锁,可有效减小潜在的性能损失。

支持多种日志输出方式:包括控制台、文件(支持自动轮转)、流式操作符等,方便实现不同场景下的日志处理。

简单易用:接口简单、文档齐全,只要几行代码就可以很容易地集成到你的项目中。

总结,spdlog是一个非常优秀的C++日志库,具有高性能、多功能、易用等优点,非常适合用于各类C++应用程序中的日志处理。

2、glog

glog是一个由Google开发的C++日志库,具有以下特点:

多级别输出:可以根据需要记录不同级别的日志信息(如DEBUG, INFO, WARNING, ERROR等),灵活可控。

多种格式化方式:支持多种输出格式和样式,可以满足不同场景下的需求,如文件名、行号和函数名等。

支持分布式存储:可以将日志同时写入多个目录或文件,方便进行多节点的系统日志管理。

快速同步:通过多线程机制进行日志记录和转储,确保高效率、实时性和稳定性。

可定制性:完全按照自己的需求来设置日志记录规则和格式,方便二次开发和集成。

总结由于这些优异的功能和性能特点,glog被广泛应用于Google内部的各种服务和产品中,它也可以轻松地扩展到其他C++应用程序中,成为高质量、高稳定性日志记录器的首选之一。

3、Boost.log

Boost.Log是Boost库提供的日志记录工具,具有以下特点:

支持多个后端日志器:Boost.Log支持多个不同的后端日志器,可以将日志记录到控制台、文件、syslog等。

灵活的过滤器和格式化器:Boost.Log提供了灵活的日志过滤器和格式化器,可以自由定制日志的格式和级别。

高度可扩展性:Boost.Log的底层框架是基于日志流的,因此用户可以基于该框架进行自定义的高度可扩展的开发。

可以在运行时修改记录器配置:Boost.Log的配置从XML文件加载,因此可以在运行时根据需求修改记录器的配置参数。

与Boost库协作:Boost.Log与其他Boost库协作无缝,如可以使用Boost.Asio异步I/O操作将日志记录到文件。

总结,Boost.Log是一款轻量、灵活、扩展性强的C++日志库,可以轻松地嵌入到任何Boost项目中。Boost.Log广泛应用于建立各种Log场景方案,同时也支持开发人员的二次开发。

4、log4cxx

Log4cxx是Apache log4j日志管理框架的C++实现,它具有以下特点:

支持多个日志输出目标:Log4cxx可以将日志记录到控制台、文件、Windows event log等目标。

动态配置:通过log4cxx的API或者在XML或.Properties文件中的配置参数可以在运行时动态配置。

细粒度控制:Log4cxx支持多种级别的日志,用户可根据需要选择不同级别的输出,从而降低日志量。

多线程安全:Log4cxx提供多线程安全性,保证写日志时没有资源冲突。

操作简单:Log4cxx的API非常简单易用,也有丰富的文档和示例可供参考。

总结,Log4cxx是一个高质量、灵活性强、性能强大、操作简单的C++日志库,可广泛应用于各类C++应用程序的日志记录处理。同时使用Log4cxx还可以有效提升开发人员的工作效率,并更好地维护应用程序的稳定性。

5、Poco.log

Poco.Log是Poco C++库提供的日志管理工具,它具有以下特点:

支持多种日志目标:Poco.Log支持将日志记录到控制台、文件、UDP Syslog等多个目标。

灵活配置:用户可以通过配置文件定制日志记录方式和格式,同时Poco.Log也支持在程序运行时动态修改日志配置。

细粒度控制:Poco.Log支持多级别的日志级别,并可以根据需要筛选不同级别的日志信息。

多线程安全:Poco.Log采用锁机制保证多线程环境下的安全性,避免多个线程同时写入同一个日志文件出现的问题。

跨平台支持:Poco库跨平台可移植性好,因此Poco.Log也支持 Windows、Linux等主流操作系统。

总结,Poco.Log是功能齐全的C++日志记录器,它借助了Poco C++库强大的网络和系统支持,可广泛应用于各类C++程序中,包括服务器应用程序和桌面应用程序。


C++ 日志库我选择了一段时间了,网上也查了很多资料,觉得不错的log4cplus,和log4cc 都不错。

  1. log4cc:因为长期不更新放弃掉
  2. log4cplus:语言简洁,但是如果想定义自己的配置文件和动态配置的话智能使用默认的.property文件,不使用配置文件还不行,如果不介意使用其默认的配置文件log4cplus是个不错的选择

github无法链接 智能找了个镜像站

直接下载github的zip包各种make时编译报错,我也不知道啥原因

1.安装必要的依赖

bash 复制代码
sudo yum install gcc-c++ cmake

2.获取spdlog源码:

bash 复制代码
cd /usr/local
git clone https://gitclone.com/github.com/gabime/spdlog 
cd spdlog

3.构建和安装:

bash 复制代码
mkdir build && cd build
cmake ..
make
sudo make install

4.安装完成后,你可以在C++代码中包含spdlog头文件并使用它。

cpp 复制代码
#include <spdlog/spdlog.h>
 
int main() {
    spdlog::info("Hello, spdlog!");
    return 0;
}
相关推荐
blammmp4 分钟前
Java:数据结构-枚举
java·开发语言·数据结构
何曾参静谧17 分钟前
「C/C++」C/C++ 指针篇 之 指针运算
c语言·开发语言·c++
暗黑起源喵22 分钟前
设计模式-工厂设计模式
java·开发语言·设计模式
WaaTong27 分钟前
Java反射
java·开发语言·反射
Troc_wangpeng28 分钟前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习
努力的家伙是不讨厌的30 分钟前
解析json导出csv或者直接入库
开发语言·python·json
Envyᥫᩣ43 分钟前
C#语言:从入门到精通
开发语言·c#
童先生1 小时前
Go 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go
lulu_gh_yu1 小时前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
Re.不晚1 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea