"""
Logging setup — Vancouver timestamps, console + file output.
"""
import logging
import os
import sys
from datetime import datetime, timezone, timedelta
VANCOUVER_TZ = timezone(timedelta(hours=-7))
class VancouverFormatter(logging.Formatter):
"""Log formatter with Vancouver timezone timestamps."""
def formatTime(self, record, datefmt=None):
dt = datetime.fromtimestamp(record.created, tz=VANCOUVER_TZ)
if datefmt:
return dt.strftime(datefmt)
return dt.strftime("%Y-%m-%d %H:%M:%S")
def setup_logging(level: str = "INFO"):
"""Configure root logger with Vancouver-time formatter."""
log_level = getattr(logging, level.upper(), logging.INFO)
formatter = VancouverFormatter(
fmt="[%(asctime)s] %(name)s %(levelname)s: %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
# Console handler
console = logging.StreamHandler(sys.stdout)
console.setFormatter(formatter)
# Root logger
root = logging.getLogger()
root.setLevel(log_level)
root.handlers.clear()
root.addHandler(console)
# Suppress noisy libs
logging.getLogger("httpx").setLevel(logging.WARNING)
logging.getLogger("telegram").setLevel(logging.WARNING)
logging.getLogger("pybit").setLevel(logging.WARNING)
return root