audio_wm/Log.h

64 lines
1.6 KiB
C
Raw Permalink Normal View History

2025-02-10 23:13:41 +08:00
#ifndef LOGGER_H
#define LOGGER_H
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <mutex>
class Logger {
public:
Logger(const std::string& filename = "audio_log.txt")
: logFile(filename, std::ios::app) {
if (!logFile.is_open()) {
throw std::runtime_error("Unable to open log file.");
}
}
~Logger() {
if (logFile.is_open()) {
logFile.close();
}
}
// ͨ<><CDA8><EFBFBD><EFBFBD>־<EFBFBD><D6BE>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
template<typename T>
void log(const T& message) {
std::lock_guard<std::mutex> guard(logMutex); // <20>̰߳<DFB3>ȫ
std::ostringstream oss;
oss << message;
logFile << oss.str() << std::endl;
}
// <20><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> std::vector<int>
void log(const std::vector<int>& vec) {
std::lock_guard<std::mutex> guard(logMutex); // <20>̰߳<DFB3>ȫ
for (size_t i = 0; i < vec.size(); ++i) {
logFile << vec[i];
if (i < vec.size() - 1) {
logFile << " "; // Ԫ<><D4AA>֮<EFBFBD><D6AE><EFBFBD>ö<EFBFBD><C3B6>ŷָ<C5B7>
}
}
logFile << std::endl; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
}
// <20><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> std::vector<double>
void log(const std::vector<double>& vec) {
std::lock_guard<std::mutex> guard(logMutex); // <20>̰߳<DFB3>ȫ
for (size_t i = 0; i < vec.size(); ++i) {
logFile << vec[i];
if (i < vec.size() - 1) {
logFile << " "; // Ԫ<><D4AA>֮<EFBFBD><D6AE><EFBFBD>ö<EFBFBD><C3B6>ŷָ<C5B7>
}
}
logFile << std::endl; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
}
private:
std::ofstream logFile;
std::mutex logMutex; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD>ļ<EFBFBD><C4BC>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>
};
#endif // LOGGER_H