import sqlite3 import os import random import datetime import json from itertools import product from o11ydiagnosis.subtasks.logreporter.log_analyzer import process_daily_summary from o11ydiagnosis.subtasks.logreporter.log_analyzer import process_eigenvalue from o11ydiagnosis.subtasks.logreporter.report_rendor import generate_report # Configuration constants LOG_LEVELS = ['INFO', 'WARN', 'ERROR', 'DEBUG'] BASE_DIR = 'data/log-stats/1h/' START_DATE = datetime.datetime(2024, 10, 1, 0, 0) # Start time for file naming REPORT_BASE_DIR = 'data/log-report/1d/' def generate_log_files(): # Create output directory if not exists os.makedirs(BASE_DIR, exist_ok=True) files = [] for hour_offset in range(48): # Generate filename based on timestamp file_time = START_DATE + datetime.timedelta(hours=hour_offset) filename = file_time.strftime("%Y%m%d%H.db") filepath = os.path.join(BASE_DIR, filename) files.append(filepath) # Determine log code range based on day if hour_offset < 24: # First day code_range = range(1, 101) # 0001-0100 else: # Second day code_range = range(50, 151) # 0050-0150 # Generate all possible log codes with 4-digit format log_codes = [f"{n:04d}" for n in code_range] # Create all possible log type combinations all_combinations = list(product(LOG_LEVELS, log_codes)) # Randomly select 100-200 unique log types for this hour num_types = random.randint(100, min(200, len(all_combinations))) selected_types = random.sample(all_combinations, num_types) # Create database and table conn = sqlite3.connect(filepath) cursor = conn.cursor() cursor.execute('''CREATE TABLE IF NOT EXISTS log_state (log_level TEXT, log_code TEXT, log_content TEXT, count INTEGER)''') # Insert log records for log_level, log_code in selected_types: # Generate random count between 1-1000 count = random.randint(1, 1000) # Create log content with pattern log_content = f"{log_level}-{log_code}: Sample log message" cursor.execute('''INSERT INTO log_state (log_level, log_code, log_content, count) VALUES (?, ?, ?, ?)''', (log_level, log_code, log_content, count)) conn.commit() conn.close() return files def save_json(data, file_path): with open(file_path,'w',encoding='utf-8') as f: json.dump(data, f,ensure_ascii=False) if __name__ == '__main__': benchmark_report_data = [ ] current_report_data = "data/log-report/1d/20241008.json" report_file = "data/log-report/1d/20241008.html" new_data = process_eigenvalue(benchmark_report_data, current_report_data) generate_report(benchmark_report_data, new_data, report_file)