Source code for yadism.log
"""Module controlling the log outputs."""
import logging
import os
from rich.logging import RichHandler
# read environment
log_level = int(os.environ.get("YADISM_LOG_LEVEL", logging.INFO))
log_to_stdout = bool(os.environ.get("YADISM_LOG_STDOUT", True))
log_file = os.environ.get("YADISM_LOG_FILE")
silent_mode = bool(os.environ.get("YADISM_SILENT_MODE", False))
debug = bool(os.environ.get("DEBUG", False))
module_name = __name__.split(".")[0]
logger = logging.getLogger(module_name)
ekologger = logging.getLogger("eko")
[docs]
def setup(
console=None,
log_level=log_level,
log_to_stdout=log_to_stdout,
log_file=log_file,
):
"""Initialize log outputs.
Parameters
----------
console: rich.console.Console
rich high level console interface
log_level: str
logging level
log_to_stdout: boolean-like
switch on/off printing on STD output
log_file: str-like
redirect output logs to file
"""
logger.setLevel(log_level)
ekologger.setLevel(log_level)
logger.handlers = []
ekologger.handlers = []
# add rich logger
if log_to_stdout:
rh = RichHandler(log_level, console=console)
rh.setFormatter(logging.Formatter("%(message)s", datefmt="[%X]"))
logger.addHandler(rh)
ekologger.addHandler(rh)
# add file logger
if log_file is not None:
fh = logging.FileHandler(log_file)
logger.addHandler(fh)
ekologger.addHandler(fh)