您好,我是昊天,国内某头部音频公司的C++主程,多年的音视频开发经验,熟悉Qt、FFmpeg、OpenGL。
本文思路来源于读者交流群,某位读者朋友出一系列的拿来即用的脚手架,如INI文件的封装解析、JSON文件的封装解析、日志模块、内存池等。本文作为第三篇——日志记录器。
关于之前两个子项目INI文件和内存池,如果感兴趣可参看文末的阅读链接。
之前推荐过两个日志库,分别是spdlog和quill。如果感兴趣可参看文末的链接。但是由于quill的性能高、Header-only、支持多线程、支持多种日志格式等特性,所以本文所述的日志记录器,是以quill为基础进行封装的。
为了满足该项目真正的成为一个脚手架项目的要求,本项目期望满足如下的需求:
本项目使用 CMakeList 进行组织,准备了quill_logger.cmake文件, 可以直接通过以下命令进行集成:
# 注意修改文件路径
include(${CMAKE_CURRENT_SOURCE_DIR}/quill_logger/quill_logger.cmake)
按照如上方式集成完后,便可以通过如下方式使用该日志记录器
#include <iostream>
#include "QuillLogger.h"//需要包含的头文件
int main()
{
//使用日志宏
QUILL_LOGGER_LOG_DEBUG("Hello, world!");
QUILL_LOGGER_LOG_INFO("info logger to log");
return 0;
}
按照如上使用方法仅可保证编译通过,但是能否正常输出日志,还取决于当前项目属性和该日志记录器的配置。
该日志记录器支持多种方式的日志输出,如本地文件输出、控制台输出、回调输出。用户可根据自己的需求进行配置。日志输出模式由三个选项控制,分别为:
log_file_path 进行修改即可。可依次修改windows、linux、macos下的路径。如果需要更加细化平台的路径,则需要由用户自行配置。log_20250311_122235.txt。为满足用户可能存在的输出、控制台输出、回调输出的需求,日志记录器的实现方式,目前有两种: