简单的python3脚本:从日志中提取信息

命名:log_extractor.py or download_stats_extractor.py

# coding:utf-8
#!/usr/bin/python3

def filter_line(line,contains,contains_not):
    if all(c in line for c in contains) and not any(n in line for n in contains_not):
        if int(line.split()[8]) == 200 and int(line.split()[9]) > 10000:  #  Additional rules added 
            return line.strip()

def count_installs_and_upgrades(line):
    elements = line.strip().split(' ')
    filename = elements[6]
    if 'electron-builder' in line:
        return {'file': filename, 'installs': 0, 'upgrades': 1}
    else:
        return {'file': filename, 'installs': 1, 'upgrades': 0}

file = 'test.log'
contains = ['GET','download']
contains_not = ['xx']

counts = {}
with open(file,'r') as f:
    while True:
        line = f.readline()
        if not line:
            break

        filtered_line = filter_line(line,contains,contains_not)

        if filtered_line:
            #print(filtered_line)
            result = count_installs_and_upgrades(line)
            filename = result['file']
            if filename in counts:
                counts[filename]['installs'] += result['installs']
                counts[filename]['upgrades'] += result['upgrades']
            else:
                counts[filename] = result
            
for file, data in counts.items():
    print(file, "Installations:", data['installs'], "Upgrades:", data['upgrades'])

posted @ 2023-04-19 18:29  武平宁  阅读(176)  评论(0)    收藏  举报