Source code for dawsonia.log
"""Configures logging using the standard-library module
{mod}`logging` and Rich.
"""
import logging
import logging.handlers
import os
import sys
[docs]
def init_logger_basic(name, level=logging.INFO):
handler = logging.StreamHandler(sys.stdout)
logging.basicConfig(handlers=[handler], level=level)
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"
[docs]
def init_logger(name, level=logging.INFO, show_time=False, show_path=False):
"""Returns a logger instance using ``rich`` package if available; else
defaults to ``logging`` standard library. Output is also written into
the filesystem in to a rotating filename which rolls over every day.
It saves as:
- dawsonia.log
Previous files would be named:
- dawsonia.log.1
- dawsonia.log.2
- ...
"""
logger = logging.getLogger(name)
try:
from rich.logging import RichHandler
handler = RichHandler(show_time=show_time, show_path=show_path)
except ImportError:
handler = logging.StreamHandler(sys.stdout)
file_handler = logging.handlers.TimedRotatingFileHandler("dawsonia.log", when="D")
formatter = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"
# handler.setLevel(level)
handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
logger.addHandler(handler)
logger.addHandler(file_handler)
logger.setLevel(level)