import logging
import sys
from pathlib import Path


def setup(log_file: str = "formfill-sb.log") -> logging.Logger:
    root = logging.getLogger("formfill-sb")
    if root.handlers:
        return root
    root.setLevel(logging.INFO)
    fmt = logging.Formatter("%(asctime)s %(levelname)s %(name)s: %(message)s", datefmt="%Y-%m-%dT%H:%M:%S")
    sh = logging.StreamHandler(sys.stdout)
    sh.setFormatter(fmt)
    root.addHandler(sh)
    try:
        Path(log_file).parent.mkdir(parents=True, exist_ok=True)
        fh = logging.FileHandler(log_file, encoding="utf-8")
        fh.setFormatter(fmt)
        root.addHandler(fh)
    except Exception as e:
        root.warning(f"could not attach file handler to {log_file}: {e}")
    return root


def child(name: str) -> logging.Logger:
    return logging.getLogger(f"formfill-sb.{name}")
