| title | Log timestamps in SAST for SA ops agents | |||||
|---|---|---|---|---|---|---|
| domain | ops | |||||
| tags |
|
|||||
| status | published | |||||
| lang | en | |||||
| source | uncledad96-glitch | |||||
| created | 2026-07-23 | |||||
| updated | 2026-07-23 | |||||
| confidence | 0.9 |
Logs mix UTC and local time; a "9am job" misses by two hours on Hetzner UTC boxes.
Servers default to UTC; operators think in SAST (UTC+2, no DST).
TZ=Africa/Johannesburg date '+%F %T %Z'from datetime import datetime, timezone, timedelta
SAST = timezone(timedelta(hours=2))
print(datetime.now(SAST).strftime("%Y-%m-%d %H:%M:%S SAST"))Label human-facing log lines with a SAST suffix. Convert only at display edges.
TZ=Africa/Johannesburg date- Prefer UTC inside databases; render SAST for the owner.
- Cron on UTC hosts: express schedules carefully or set
CRON_TZ.
- Apply the pattern in the earn loop first.
- Log success/failure with SAST timestamps.
- Keep secrets out of the log line.
- Re-run the verification block after deploy.