MST

星途 面试题库

面试题:Python错误日志分析中的异常分类统计

在一个复杂的Python项目中,已经通过logging记录了大量错误日志。现在要求编写代码,分析这些日志文件,统计不同类型异常(如TypeError、ValueError等)出现的次数,并按照出现次数从高到低排序输出。假设日志文件每行记录一条日志,且日志格式为'时间 - 模块名 - 日志级别 - 异常信息',请给出完整的Python代码实现。
10.5万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
import re
from collections import Counter

def analyze_logs(log_file_path):
    pattern = r' - .* - .* - (.*Error):'
    error_counter = Counter()
    with open(log_file_path, 'r', encoding='utf-8') as file:
        for line in file:
            match = re.search(pattern, line)
            if match:
                error_type = match.group(1)
                error_counter[error_type] += 1
    sorted_errors = sorted(error_counter.items(), key=lambda item: item[1], reverse=True)
    for error_type, count in sorted_errors:
        print(f'{error_type}: {count}')


log_file_path = 'your_log_file.log'
analyze_logs(log_file_path)
  1. 导入必要的模块re用于正则表达式匹配,collections.Counter用于统计不同类型异常出现的次数。
  2. 定义分析日志的函数analyze_logs
    • 使用正则表达式r' - .* - .* - (.*Error):'匹配日志中的异常类型。
    • 初始化一个Counter对象error_counter来统计异常类型出现的次数。
    • 逐行读取日志文件,对每一行进行正则匹配,如果匹配成功,提取异常类型并更新error_counter
    • 使用sorted函数按照异常出现次数从高到低对error_counter中的数据进行排序。
    • 遍历排序后的结果并打印每种异常类型及其出现次数。
  3. 调用函数:将日志文件路径作为参数传入analyze_logs函数,如果日志文件路径不同,需要修改log_file_path变量的值。