前言
C++中的日志库有很多,以下是其中比较知名的一些:
- spdlog:Speed + Log,是一个高速异步日志库,支持多线程和旋转文件日志,适合用于高负载的系统。
- glog:Google出品,提供了多种级别的日志输出、多个日志目录的分布式日志存储、快速同步日志到磁盘等功能。
- Boost.Log:由Boost库提供的日志记录工具,支持多个不同的后端日志器,可以定制多种记录格式。
- log4cxx(log4cplus):Apache开发的一个C++日志库,设计灵活,可通过配置文件进行调整,同时也支持多种输出方式。
- 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 都不错。
- log4cc:因为长期不更新放弃掉
- 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;
}