需求
引擎扫描输出的log文件为标准的json格式,放到数据库前需要按照数据库的格式转换一下,变成excel的即可通过Navicat导入。
实现
在xijun小伙伴的帮助下搞定。
准备工作:Python语言中,写入Excel文件的第三方库——xlwt;json库已经自带了。
python">import xlwt
import json
import time
def LogToExcel(filename):
print u"正在进行log日志转换成excel O(∩_∩)O"
ws = xlwt.Workbook()
sheet=ws.add_sheet(u'数据',cell_overwrite_ok=True)
sheet.write(0,0,"id")
sheet.write(0,1,"pro_name")
sheet.write(0,2,"ip")
sheet.write(0,3,"country")
sheet.write(0,4,"province")
sheet.write(0,5,"city")
sheet.write(0,6,"latitude")
sheet.write(0,7,"longitude")
sheet.write(0,8,"port")
sheet.write(0,9,"proto")
i = 1
with open(filename,'r') as log:
lines = log.readlines()
for line in lines:
info = json.loads(line)
sheet.write(i,0,i)
sheet.write(i,2,info['ip'])
sheet.write(i,3,info['location']['country'])
sheet.write(i,4,info['location']['province'])
sheet.write(i,5,info['location']['city'])
sheet.write(i,6,info['location']['latitude'])
sheet.write(i,7,info['location']['longitude'])
sheet.write(i,8,info['port'])
sheet.write(i,9,info['proto'])
i += 1
#以时间做文件名
now=time.time()
now1=time.strftime("%Y%m%d%H%M%S")
ws.save('%s.xls' % now1)
print u"log转换成excel的文件【%s.xls】已保存到当前目录"%(now1)
if __name__ == "__main__":
#log的文件名写在括号里,每次要修改括号里的文件名哦,脚本也要放到log文件的同一目录
LogToExcel('test.log')