Store log timestamps in ISO format
This commit is contained in:
parent
78c0727677
commit
1140a02377
1 changed files with 13 additions and 6 deletions
|
@ -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]:
|
||||
# Support both legacy log date format and ISO timestamps
|
||||
for fmt in ("%Y-%m-%d %H:%M:%S", DATE_FMT):
|
||||
try:
|
||||
last_dt = datetime.strptime(row[0], DATE_FMT)
|
||||
parsed = datetime.strptime(row[0], fmt)
|
||||
if fmt == DATE_FMT:
|
||||
parsed = parsed.astimezone(timezone.utc).replace(tzinfo=None)
|
||||
last_dt = parsed
|
||||
break
|
||||
except ValueError:
|
||||
last_dt = None
|
||||
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"]),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue