现在有很多成熟的日志,但用起来有点麻烦,有时候只是记录个简单的报错,自己搭建了一个,根据情况自己再调整输入的内容,当大于15KB会自动清空重写。
#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <iostream>
#include <fstream>
#include <sys/stat.h>
using namespace std;
#define DeleteRecord_C "/usr/test/DeleteRecord_C.txt" //需要写入的日志文件路径
#define LINE 1024
//清空原文件内容
void DeleteTxt()
{
ofstream fileout(DeleteRecord_C, ios::trunc);//ios::trunc是清除原文件内容,可不写,默认就是它
if (!fileout) {
cout << "Create file failure...\n";
exit(0);
}
fileout.close();
}
//判断文件大小
int get_file_size()
{
double filesize = -1;
struct stat fileInfo;
if (stat(DeleteRecord_C, &fileInfo) < 0)
{
cout << filesize << endl;
return -1;
}
else
{
filesize = fileInfo.st_size;//返回的是字节 比特
//cout << filesize << endl;
return filesize/1024;//返回KB
}
}
int main()
{
//定义命令
char *rm_cmd = "rm -rf /home/C_rec_log/";//需要写入的内容
/******获取日期******/
time_t timep;
struct tm *p;
time(&timep);
p = localtime(&timep);
//获取年
//*year = 1900+(p->tm_year);
//printf("year= %d\n",year);
//获取月
//*month = 1+(p->tm_mon);
//printf("month= %d\n",month);
//将删除命令写入日志
if (get_file_size() > 15)//15k
{
//日志文件大于5M(5 * 1024)后 删除重写
DeleteTxt();
}
fstream f;
//追加写入,在原来基础上加了ios::app
f.open(DeleteRecord_C, ios::out | ios::app);
//输入你想写入的内容
f << rm_cmd << endl;
f.close();
return 0;
}