Source code for vivarium.cluster_tools.logs

"""
=================
Logging Utilities
=================

"""

from __future__ import annotations

import sys
from pathlib import Path
from typing import TextIO

from loguru import logger


[docs] def add_logging_sink( sink: TextIO | str | Path, verbose: int, colorize: bool = False, serialize: bool = False ) -> None: message_format = ( "<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | " "<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> " "- <level>{message}</level>" ) if verbose == 0: logger.add( sink, colorize=colorize, level="INFO", format=message_format, serialize=serialize, ) else: logger.add( sink, colorize=colorize, level="DEBUG", format=message_format, serialize=serialize )
[docs] def configure_main_process_logging_to_terminal(verbose: int) -> None: logger.remove() # Clear default configuration add_logging_sink(sys.stdout, verbose, colorize=True)
[docs] def configure_main_process_logging_to_file(output_directory: Path) -> None: main_log = output_directory / "main.log" serial_log = output_directory / "main.log.json" add_logging_sink(main_log, verbose=2) add_logging_sink(serial_log, verbose=2, serialize=True)