54 lines
1.5 KiB
Python
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") |