使用Python从日志中获取关键性的信息到Excel

目前有这么个需求:日志密密麻麻一大堆,但是如何快速获取关键性信息?成为了我们关注的问题,不单单要获取,还要耐看。

准备好日志,查询失败的日志那一行的相关信息,上代码:

import openpyxl

# 指定要查找的关键词
target_word = 'Failed,'

# 打开txt文件并查找关键词
text_file = open('test.log', 'r', encoding='utf-8')
data = []
for line in text_file:
    if target_word in line:
        data.append([line.strip()])  # 把查找到的行(即包含指定关键字的行)添加到元素为列表的列表中
text_file.close()

# 创建Excel
workbook = openpyxl.Workbook()
worksheet = workbook.active

# 把数据写入Excel
for index, row in enumerate(data):
    worksheet.cell(row=index+1, column=1, value=row[0])

# 保存Excel
workbook.save('get_data.xlsx')

得到的效果就是这样子:

 优化版:添加了查询条件

import openpyxl
 
 
file_name = 'test.log' # 文件名
keyword = 'Failed,' # 查询关键字
 
with open(file_name, 'r', encoding='utf-8') as f:
    lines = f.readlines()
 
keyword_lines = [] # 存储关键字所在行号
for index, line in enumerate(lines):
    if keyword in line: 
        keyword_lines.append(index)
 
result = [] # 存储查询结果
for keyword_line in keyword_lines:
    start_index = max(0, keyword_line-5) # 上限不能超过第一行
    end_index = keyword_line+1 # 下限为关键字所在行
    result.extend(lines[start_index:end_index]) # 存储结果
 
 
# 创建或打开Excel文件
excel_name = 'result.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
 
# 将查询结果逐行写入Excel文件
for index, r in enumerate(result):
    sheet.cell(row=index+1, column=1, value=r)
 
# 保存Excel文件
wb.save(excel_name)

 

 

posted @ 2023-03-08 14:09  弹弹大魔王  阅读(220)  评论(0编辑  收藏  举报