读取指定文件夹当日日志文件并提取ERROR行生成表格求助
当日错误日志提取与表格生成方案
需求概述
- 读取指定文件夹内当日生成/修改的所有日志文件
- 筛选出包含
"ERROR"字符串的日志行 - 生成包含
LogName(日志文件名)和ErrorDescription(完整错误日志内容)的结构化表格
Python 实现代码
import os from datetime import datetime def extract_today_error_logs(folder_path): today = datetime.today().date() error_records = [] # 遍历指定文件夹内的所有文件 for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) # 跳过文件夹,仅处理文件 if not os.path.isfile(file_path): continue # 获取文件最后修改日期,匹配当日才处理 file_modified_date = datetime.fromtimestamp(os.path.getmtime(file_path)).date() if file_modified_date != today: continue # 读取文件并筛选含ERROR的行 with open(file_path, 'r', encoding='utf-8', errors='ignore') as f: for line in f: line = line.strip() # 兼容带引号和不带引号的ERROR标记 if '"ERROR"' in line or 'ERROR' in line: error_records.append({ 'LogName': filename, 'ErrorDescription': line }) return error_records def generate_markdown_table(error_records): if not error_records: return "无当日错误日志记录" # 构建Markdown表格结构 table = "| LogName | ErrorDescription |\n" table += "|---------|------------------|\n" # 填充每行数据,处理特殊字符避免格式错乱 for record in error_records: clean_desc = record['ErrorDescription'].replace('|', '\\|') table += f"| {record['LogName']} | {clean_desc} |\n" return table # 示例调用(替换为实际日志文件夹路径) if __name__ == "__main__": target_folder = "/your/log/folder/path" error_logs = extract_today_error_logs(target_folder) print(generate_markdown_table(error_logs))
关键逻辑说明
- 当日文件过滤:通过文件最后修改时间与当日日期对比,确保只处理当日更新的日志文件
- 错误行识别:同时兼容带双引号的
"ERROR"和普通ERROR标记,覆盖常见日志格式 - 表格格式化:自动处理日志中的特殊字符,避免Markdown表格格式错乱
示例输出
| LogName | ErrorDescription |
|---|---|
| app.log | 2023.04.17D07:05:42 : ERROR : Failed to connect |
| auth.log | 2023.04.17D09:12:34 : ERROR : Invalid credentials |
内容的提问来源于stack exchange,提问作者Code Enthusiast
相关产品推荐
相关产品推荐

