notepad++看日志特别方便,并且搜索快,其正则表达式搜索方式特别好用。但是这个日志查看工具有一个缺点,就是打不开大的日志文件。
比如我有一个接近2G的日志文件 ,这个软件就完成打不开了。
为了解决大文件问题,我专门写了一个小工具,用于将一个大的日志文件拆分成多几小的日志文件,每一个文件200M,解决日志打不开的麻烦。
源码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char tmp[1024] = {0};
unsigned int stop = 0;
unsigned int file_idx = 0;
unsigned int file_cnt = 0;
unsigned int file_size = 200*1024; //200MB
FILE* fin = fopen("./input.log", "rb");
FILE* fout = NULL;
char out_file[64] = {0};
if(NULL == fin)
{
printf("把要拆分的文件重命名为 input.log->同时放在本地目录\n");
return 0;
}
while(!stop)
{
int len = fread(tmp, 1, sizeof(tmp), fin);
if(len != sizeof(tmp))
{
stop = 1;
}
if(0 == (file_cnt%file_size))
{
if(NULL != fout)
{
fclose(fout);
fout = NULL;
}
file_idx = file_cnt/file_size;
memset(out_file, 0, sizeof(out_file));
sprintf(out_file, "out_%d.log", file_idx);
fout = fopen(out_file, "wb");
if(NULL == fout)
{
printf("打开 %s 错误\n", out_file);
}
}
fwrite(tmp, 1, len, fout);
file_cnt = file_cnt+1;
}
if(NULL != fout)
{
fclose(fout);
fout = NULL;
}
if(NULL != fin)
{
fclose(fin);
fin = NULL;
}
return 0;
}
编译:
gcc exchange_file.c -o exchange_file
使用:
(1)把要拆分的文件重命名为 input.log->同时放在本地目录
(2)
./exchange_file