Source code for bibcat.utils.logger_config

import logging
import os
import time

from bibcat import config

# Define the logs directory at output root path with current date
LOG_DIR = os.path.join(config.output.root_path, "logs", time.strftime("%Y-%m-%d"))

# Get the start time in a readable format
start_time = time.strftime("%Y-%m-%d_%H-%M-%S")

os.makedirs(LOG_DIR, exist_ok=True)  # Ensure the logs directory exists


[docs] def setup_logger(name: str, level: int = logging.DEBUG) -> logging.Logger: """Set up logger""" logger = logging.getLogger(name) if logger.hasHandlers(): return logger logger.setLevel(level) log_file_path = os.path.join(LOG_DIR, f"bibcat_log_{start_time}.log") # Create handlers c_handler = logging.StreamHandler() f_handler = logging.FileHandler(log_file_path) # Only log DEBUG messages if level is explicitly set to DEBUG handler_level = logging.DEBUG if level == logging.DEBUG else logging.INFO c_handler.setLevel(handler_level) f_handler.setLevel(handler_level) # Create formatters and add it to handlers formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") c_handler.setFormatter(formatter) f_handler.setFormatter(formatter) # Add handlers to the logger logger.addHandler(c_handler) logger.addHandler(f_handler) return logger