最近生产环境系统出问题,为了排除问题,把日志级别开到debug。结果就一会功夫,日志瞬间增加到2g。结果太惨了,记事本和nodepad+就打不开,直接报文件太大。啊啊啊,怎么办呐?还等着分析日志找bug呐。
开洞脑袋,想啊想,记得曾经看过一篇Python读取大文件,而且可以让内存不爆掉的文章。同时又结合分而治之的思想。ps:据说hadoop好像也是这种思想。因此决定把大文件,分隔处理成小文件,然后就可以用记事本打开了。
生命苦短,请用python。ps:其实工作中一直用java。动手,几经调试,代码出炉:
import math i=0 filename='' write='' Rline = '' def writeFile(fileName,line): global filename global write global Rline if filename!=fileName and filename=='': write = open('D:/soft/apache-tomcat-7.0.47/logs/'+fileName+".log", 'a+') write.write(line) elif filename!=fileName and Rline!='': write.close()#新文件就关闭上个write的流 else: write.write(line) filename = fileName Rline = line with open('D:/soft/apache-tomcat-7.0.47/logs/cloudq.log','r') as infile: for line in infile: name = i/500#设置每一个文件500行。 # print(math.floor(name)) writeFile(str(math.floor(name)),line) i=i+1 如果代码报错,请去掉中文注释再试。