欢迎访问宙启技术站
智能推送

使用Python编写的简单日志分析工具

发布时间:2023-12-04 22:48:38

下面是一个使用Python编写的简单日志分析工具的例子:

import re

def analyze_logs(file_path):
    # 定义日志分析结果的数据结构
    log_stats = {
        'total_requests': 0,
        'success_requests': 0,
        'error_requests': 0,
        'top_urls': {},
        'top_error_urls': {}
    }
    
    # 打开日志文件
    with open(file_path, 'r') as file:
        # 逐行读取日志文件
        for line in file:
            log_stats['total_requests'] += 1
            # 判断日志行是否为成功请求
            if re.search('HTTP/1.\d" 2\d+', line):
                log_stats['success_requests'] += 1
                # 提取请求URL
                url = re.findall('GET (.*?) HTTP', line)
                if url:
                    url = url[0]
                    if url in log_stats['top_urls']:
                        log_stats['top_urls'][url] += 1
                    else:
                        log_stats['top_urls'][url] = 1
            # 判断日志行是否为错误请求
            elif re.search('HTTP/1.\d" [4-5]\d+', line):
                log_stats['error_requests'] += 1
                # 提取请求URL
                url = re.findall('GET (.*?) HTTP', line)
                if url:
                    url = url[0]
                    if url in log_stats['top_error_urls']:
                        log_stats['top_error_urls'][url] += 1
                    else:
                        log_stats['top_error_urls'][url] = 1
    
    return log_stats

# 测试日志分析工具
file_path = 'access.log'
log_stats = analyze_logs(file_path)

# 打印分析结果
print('Total requests:', log_stats['total_requests'])
print('Successful requests:', log_stats['success_requests'])
print('Error requests:', log_stats['error_requests'])
print('Top URLs:')
for url, count in log_stats['top_urls'].items():
    print(url, count)
print('Top Error URLs:')
for url, count in log_stats['top_error_urls'].items():
    print(url, count)

这个日志分析工具可以读取一个日志文件(access.log),并统计以下信息:

- 总请求数量

- 成功请求数量

- 错误请求数量

- 响应最多的请求URL和出现次数

- 错误响应最多的请求URL和出现次数

工具通过逐行读取日志文件,使用正则表达式匹配关键内容来判断请求的状态,并提取请求URL。然后,根据匹配结果更新日志分析结果的数据结构。最后,输出分析结果。

以上是一个简单的日志分析工具的例子,你可以根据需求进行修改和扩展。例如,可以根据需要添加更多的分析指标,或者改变输出格式。