Source code for idstools.utils.idslogger

import logging
import sys

try:
    from rich.console import Console
    from rich.logging import RichHandler

    rich_available = True
except ImportError:
    rich_available = False


[docs]def setup_logger( name, log_file=None, log_file_level=logging.DEBUG, stdout_level=logging.WARN, fmt=None, ): # Format for file log if fmt is None: fmt = "%(asctime)s | %(levelname)9s | %(filename)s:%(lineno)d | %(message)s" formatter = logging.Formatter(fmt) logger = logging.getLogger(name) logger.setLevel(stdout_level) # Create stream handler for logging to stdout (log all five levels) if rich_available: console = Console() handler = RichHandler(console=console) handler.setLevel(stdout_level) logger.addHandler(handler) else: stdout_handler = logging.StreamHandler(sys.stdout) stdout_handler.setLevel(stdout_level) stdout_handler.setFormatter(logging.Formatter("%(message)s")) logger.addHandler(stdout_handler) # Create file handler for logging to a file (log all five levels) if log_file: file_handler = logging.FileHandler(log_file) file_handler.setLevel(log_file_level) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger