comic-pipeline-text / src /custom_log.py
Manish Gupta
First commit
e363158
import logging
import sys
import colorlog
def setup_logger(name: str) -> logging.Logger:
"""
Set up a logger with colored output for console if running in a terminal.
Args:
name (str): Name of the logger.
Returns:
logging.Logger: Configured logger instance.
"""
# Check if the output is a terminal to enable colored output
use_colors = sys.stdout.isatty()
# Create a stream handler
handler = colorlog.StreamHandler()
if use_colors:
# Use colored formatter for terminal output
handler.setFormatter(
colorlog.ColoredFormatter(
"%(asctime)s - %(log_color)s%(levelname)s%(reset)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
log_colors={
"DEBUG": "cyan",
"INFO": "green",
"WARNING": "yellow",
"ERROR": "red",
"CRITICAL": "bold_red",
},
)
)
else:
# Use standard formatter when not in a terminal
handler.setFormatter(
logging.Formatter(
"%(asctime)s - %(levelname)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S"
)
)
# Configure the logger
logger = logging.getLogger(name)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.propagate = False
return logger