diff --git a/scripts/init_db.py b/scripts/init_db.py index 8bc70fb..f378b5c 100644 --- a/scripts/init_db.py +++ b/scripts/init_db.py @@ -3,7 +3,7 @@ import os import re import sqlite3 -from datetime import datetime +from datetime import datetime, timezone LOG_DIR = "/var/log/nginx" DB_FILE = "database/ngxstat.db" @@ -42,10 +42,16 @@ cursor.execute("SELECT time FROM logs ORDER BY id DESC LIMIT 1") row = cursor.fetchone() last_dt = None if row and row[0]: - try: - last_dt = datetime.strptime(row[0], DATE_FMT) - except ValueError: - last_dt = None + # Support both legacy log date format and ISO timestamps + for fmt in ("%Y-%m-%d %H:%M:%S", DATE_FMT): + try: + parsed = datetime.strptime(row[0], fmt) + if fmt == DATE_FMT: + parsed = parsed.astimezone(timezone.utc).replace(tzinfo=None) + last_dt = parsed + break + except ValueError: + continue try: log_files = [] @@ -74,6 +80,7 @@ for log_file in log_files: entry_dt = datetime.strptime(data["time"], DATE_FMT) except ValueError: continue + entry_dt = entry_dt.astimezone(timezone.utc).replace(tzinfo=None) if last_dt and entry_dt <= last_dt: continue cursor.execute( @@ -86,7 +93,7 @@ for log_file in log_files: ( data["ip"], data["host"], - data["time"], + entry_dt.strftime("%Y-%m-%d %H:%M:%S"), data["request"], int(data["status"]), int(data["bytes_sent"]),