← Back
"""
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