当前位置 博文首页 > 程序员石磊:python 日志分割器 大文本处理
最近生产环境系统出问题,为了排除问题,把日志级别开到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
如果代码报错,请去掉中文注释再试。
cs