Skip to content

dizzy.logger

dizzy.logger

Dizzy logging — INFO to stderr via rich, DEBUG to JSON file.

setup_logging(log_dir=None, show_level=False, gitignore=True)

Configure the dizzy logger. Called once from main().

Source code in dizzy/src/dizzy/logger.py
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
def setup_logging(
    log_dir: Path | None = None, show_level: bool = False, gitignore: bool = True
) -> None:
    """Configure the dizzy logger. Called once from main()."""
    if log_dir is None:
        log_dir = Path.home() / ".local" / "share" / "dizzy" / "logs"
    log_dir.mkdir(parents=True, exist_ok=True)

    if gitignore:
        gi = log_dir / ".gitignore"
        if not gi.exists():
            gi.write_text("*\n")

    root = logging.getLogger("dizzy")
    root.setLevel(logging.DEBUG)

    rich_handler = RichHandler(
        level=logging.INFO, show_path=False, markup=False, show_time=False, show_level=show_level
    )
    root.addHandler(rich_handler)

    log_file = log_dir / f"dizzy_{int(time.time())}_{os.getpid()}.log"
    file_handler = logging.FileHandler(log_file)
    file_handler.setLevel(logging.DEBUG)
    file_handler.setFormatter(_JsonFormatter())
    root.addHandler(file_handler)