Files
pydicom-migrasi-clarity/utils/logger.py
2025-05-09 09:00:46 +07:00

54 lines
1.5 KiB
Python

"""
Logging configuration and utility functions.
"""
import os
import logging
from logging.handlers import RotatingFileHandler
import sys
from config import settings
def setup_logger(name, log_file=None):
"""
Set up a logger with both console and file handlers.
Args:
name (str): Logger name
log_file (str, optional): Log file path. If None, uses the default from settings.
Returns:
logging.Logger: Configured logger
"""
if log_file is None:
log_file = settings.LOG_FILE
# Create the logs directory if it doesn't exist
os.makedirs(os.path.dirname(log_file), exist_ok=True)
logger = logging.getLogger(name)
logger.setLevel(getattr(logging, settings.LOG_LEVEL))
# Create formatter
formatter = logging.Formatter(settings.LOG_FORMAT, datefmt='%Y-%m-%d %H:%M:%S')
# Create console handler
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(getattr(logging, settings.LOG_LEVEL))
console_handler.setFormatter(formatter)
# Create file handler
file_handler = RotatingFileHandler(
log_file,
maxBytes=settings.MAX_LOG_SIZE,
backupCount=settings.BACKUP_COUNT
)
file_handler.setLevel(getattr(logging, settings.LOG_LEVEL))
file_handler.setFormatter(formatter)
# Add handlers to logger
logger.addHandler(console_handler)
logger.addHandler(file_handler)
return logger
# Create main application logger
main_logger = setup_logger("LOG")