Skip to content

Commit 62307a8

Browse files
Create process_logs.py
1 parent c9a3805 commit 62307a8

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

process_logs.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import json
2+
import os
3+
import sys
4+
import datetime
5+
import time
6+
import glob
7+
8+
# Configuration from environment variables
9+
LOG_DIR = os.environ.get('LOG_DIR', '/logs')
10+
RETENTION_DAYS = int(os.environ.get('RETENTION_DAYS', '30'))
11+
CLEANUP_INTERVAL_HOURS = int(os.environ.get('CLEANUP_INTERVAL_HOURS', '1'))
12+
13+
# Initialize last cleanup time
14+
last_cleanup_time = time.time()
15+
16+
def perform_cleanup():
17+
now = datetime.datetime.now(datetime.timezone.utc)
18+
cutoff_date = now - datetime.timedelta(days=RETENTION_DAYS)
19+
for service_folder in glob.glob(os.path.join(LOG_DIR, '*')):
20+
if os.path.isdir(service_folder):
21+
for log_file in glob.glob(os.path.join(service_folder, '*.log')):
22+
file_name = os.path.basename(log_file)
23+
try:
24+
file_date_str = file_name.split('.')[0]
25+
file_date = datetime.datetime.strptime(file_date_str, '%Y-%m-%d').replace(tzinfo=datetime.timezone.utc)
26+
if file_date < cutoff_date:
27+
os.remove(log_file)
28+
print(f"Deleted old log file: {log_file}", file=sys.stderr)
29+
except Exception as e:
30+
print(f"Error processing file {log_file}: {e}", file=sys.stderr)
31+
32+
for line in sys.stdin:
33+
try:
34+
log_entry = json.loads(line)
35+
service_name = log_entry.get('ServiceName', 'unknown')
36+
start_utc = log_entry.get('StartUTC', None)
37+
if start_utc:
38+
log_date = datetime.datetime.fromisoformat(start_utc.replace('Z', '+00:00')).date()
39+
else:
40+
log_date = datetime.date.today()
41+
folder_path = os.path.join(LOG_DIR, service_name)
42+
os.makedirs(folder_path, exist_ok=True)
43+
file_name = f"{log_date.isoformat()}.log"
44+
file_path = os.path.join(folder_path, file_name)
45+
with open(file_path, 'a') as f:
46+
f.write(line)
47+
except json.JSONDecodeError:
48+
print(f"Invalid JSON: {line}", file=sys.stderr)
49+
except Exception as e:
50+
print(f"Error processing log entry: {e}", file=sys.stderr)
51+
52+
# Check if it's time for cleanup
53+
current_time = time.time()
54+
if current_time > last_cleanup_time + CLEANUP_INTERVAL_HOURS * 3600:
55+
print("Performing cleanup...", file=sys.stderr)
56+
perform_cleanup()
57+
last_cleanup_time = current_time

0 commit comments

Comments
 (0)