2026-10-30 18:22:45
C++框架中内置的日志记录功能因框架而异,以下是常见框架及其日志功能的详细总结:
1. QtqDebug():调试信息(开发阶段使用)。
qWarning():警告信息(潜在问题)。
qCritical():严重错误(可能影响程序运行)。
qFatal():致命错误(触发后终止程序)。
示例代码:
#include <QLoggingCategory>#include <QDebug>int main() { QLoggingCategory logger("com.example.myapp"); logger.info() << "Application started"; // ...其他逻辑 return 0;}2. Boost.Log高级控制:支持自定义日志格式、过滤器(如按严重级别过滤)和多目标输出(文件、控制台、数据库等)。
线程安全:内置多线程同步机制。
属性系统:可附加上下文信息(如时间戳、线程ID)到日志条目。
sinks:定义日志输出目标(如text_file_sink)。
attributes:添加元数据(如severity级别)。
示例配置:
#include <boost/log/trivial.hpp>#include <boost/log/utility/setup/file.hpp>namespace logging = boost::log;void init_log() { logging::add_file_log("sample.log"); logging::core::get()->set_filter(logging::trivial::severity >= logging::trivial::info);}int main() { init_log(); BOOST_LOG_TRIVIAL(info) << "Application initialized"; return 0;}3. spdlog高性能:低延迟,适合高频日志场景。
轻量级:无依赖,易于集成。
多线程支持:线程安全的日志记录。
格式化选项:支持自定义模式(如[%H:%M:%S] [%l] %v)。
输出目标:文件、控制台、系统日志(syslog)等。
示例代码:
#include "spdlog/spdlog.h"int main() { auto logger = spdlog::basic_logger_mt("basic_logger", "logs.txt"); logger->info("Welcome to spdlog!"); logger->error("Some error message with arg: {}", 1); return 0;}4. Google Cloud Logging结构化日志:支持JSON格式,便于分析。
集成工具:通过Google Cloud Console或Stackdriver查看日志。
示例代码:
#include <google/cloud/logging/logging_service_v2_client.h>int main() { auto client = google::cloud::logging::LoggingServiceV2Client( google::cloud::logging::MakeLoggingServiceV2Connection()); // 发送日志到Google Cloud return 0;}其他框架的日志功能根据项目需求(如性能、集成复杂度、云支持)选择合适的框架即可。