c++输出日志文件
代码如下
#include <iostream>
#include <fstream>
#include <string>
#include <chrono>
#include <thread>
int main()
{
// 定义文件路径,需要注意文件夹/home/wljss/my_log需要存在否则会报错
std::string filePath = "/home/wljss/my_log/datalog";
std::cout<<filePath<<std::endl;
// 创建并打开文件,以追加模式(std::ios_base::app)打开文件;后面可以用outFile.open()来打开别的文件
std::ofstream outFile(filePath, std::ios_base::app);
// 检查文件是否成功打开
if (!outFile.is_open()) {
std::cout << "无法打开文件: " << filePath << std::endl;
return 1;
}
// 模拟不断追加写入数据
for(int i=1;i<=5;++i)
{
// 获取当前时间戳
auto now = std::chrono::system_clock::now();
auto in_time_t = std::chrono::system_clock::to_time_t(now);
std::cout << "当前时间: " << std::ctime(&in_time_t);
// 生成一些示例日志数据
std::string logData = "日志数据: " + std::to_string(rand() % 1000) + "\n";
// 写入数据到文件
outFile << logData;
// 刷新输出缓冲区,确保数据写入文件
outFile.flush();
// 等待一段时间(例如1秒),然后再次写入
std::this_thread::sleep_for(std::chrono::seconds(1));
}
// 关闭文件
outFile.close();
return 0;
}
上面需要注意,如果没有文件夹/home/wljss/my_log会报错,可以用下面的方法创建文件夹
//linux系统
#include <unistd.h>
std::string folderPath="/home/wljss/my_log";
if (access(folderPath.c_str(), 0) == -1)
{
system(("mkdir -p "+folderPath).c_str());
}

浙公网安备 33010602011771号