C++ 日志系统设计:从基础实现到性能优化
在设计 C++ 日志系统时,我们通常需要考虑几个核心维度:
- 易用性:接口简洁,开发者能快速集成。
- 性能:记录过程应尽可能低延迟,避免阻塞主业务。
- 灵活性:支持不同级别(Error、Warning、Info、Debug),且能动态调整。
- 可配置性:文件路径、格式等参数需可配置。
- 线程安全:多线程环境下必须保证数据一致。
第一阶段:基础架构实现
我们先从一个最基础的版本入手。这个版本重点在于满足线程安全和基本的文件写入功能。
#include <iostream>
#include <fstream>
#include <mutex>
#include <memory>
enum class LogLevel { ERROR, WARNING, INFO, DEBUG };
class Logger {
public:
Logger(const std::string& file_name) {
file_stream_.open(file_name, std::ios::out | std::ios::app);
}
~Logger() {
file_stream_.close();
}
void Log(LogLevel level, const std::string& message) {
std::lock_guard<std::mutex> lock(mutex_);
switch (level) {
case LogLevel::ERROR: file_stream_ << "[ERROR] "; break;
case LogLevel::WARNING: file_stream_ << "[WARNING] "; break;
case LogLevel::INFO: file_stream_ << ; ;
LogLevel::DEBUG: file_stream_ << ; ;
}
file_stream_ << message << std::endl;
}
:
std::ofstream file_stream_;
std::mutex mutex_;
};
{
logger = std::<Logger>();
logger->(LogLevel::INFO, );
logger->(LogLevel::ERROR, );
;
}


