You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用正则多关键词匹配筛选系统错误日志的实现问题

日志多关键词全匹配筛选实现方案

需求说明

需要解析以下格式的系统日志文件,根据用户输入的关键词,返回同时包含所有指定关键词+默认error关键词的日志行:

July 31 12:54:55 mycomputername updater[93309]: WARN Please send help I am stuck inside the internet

July 31 16:07:01 mycomputername process[11843]: ERROR Process failed

July 31 16:20:37 mycomputername dhcpclient[36371]: ERROR Unable to download more RAM

July 31 16:24:34 mycomputername updater[83956]: INFO Access permitted

July 31 16:43:19 mycomputername utility[31859]: ERROR Process failed

July 31 16:43:19 mycomputername CRON[31859]: ERROR: Failed to start CRON job due to hard partying.

现有逻辑已经实现了关键词收集:默认error_patterns列表包含error保证只匹配ERROR级别日志,用户输入的搜索内容会转小写拆分后追加到列表中,比如用户输入CRON Failed to start,最终的匹配列表为:

['error', 'cron', 'failed', 'to', 'start']

要求以上述输入为例,仅返回最后一条CRON相关的错误日志。

现有逻辑问题

原有匹配代码的核心错误:

  • 直接将列表error_patterns转为字符串传给正则,实际是搜索"['error', 'cron', 'failed', 'to', 'start']"这个字面量字符串,完全无法匹配目标内容
  • 无需复杂的正则匹配,直接判断所有关键词是否都存在于当前行的小写内容中即可实现需求
  • with open语法会自动管理文件句柄,末尾的f.close()属于冗余代码
  • 逐行读取日志内存占用远低于一次性读取全文件,read_line判断逻辑多余

优化后实现代码

关键词收集函数(可直接复用原有逻辑)

def get_error_patterns():
    error_patterns = ["error"]
    user_input = input("What's the error? ").lower().split()
    error_patterns.extend(user_input)
    return error_patterns

日志匹配逻辑

def filter_logs(log_file_path, error_patterns):
    matched_lines = []
    with open(log_file_path, mode='r', encoding='UTF-8') as f:
        for line in f:
            # 跳过空行
            if not line.strip():
                continue
            # 转小写后判断所有关键词是否都存在
            line_lower = line.lower()
            if all(keyword in line_lower for keyword in error_patterns):
                matched_lines.append(line.strip())
    return matched_lines

调用示例

if __name__ == "__main__":
    patterns = get_error_patterns()
    results = filter_logs("你的日志文件路径.log", patterns)
    for line in results:
        print(line)

效果验证

当用户输入CRON Failed to start时,输出结果为:

July 31 16:43:19 mycomputername CRON[31859]: ERROR: Failed to start CRON job due to hard partying.

内容的提问来源于stack exchange,提问作者Julia Martynenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 07:27:01