58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
import os
|
|
import logging
|
|
from logging.handlers import RotatingFileHandler
|
|
from colorlog import ColoredFormatter
|
|
|
|
def setup_logger(app):
|
|
"""Setup application logging"""
|
|
|
|
# Create logs directory if it doesn't exist
|
|
log_dir = 'logs'
|
|
if not os.path.exists(log_dir):
|
|
os.makedirs(log_dir)
|
|
|
|
log_file = app.config.get('LOG_FILE', 'logs/app.log')
|
|
log_level = app.config.get('LOG_LEVEL', 'INFO')
|
|
|
|
# Set up file handler
|
|
file_handler = RotatingFileHandler(
|
|
log_file,
|
|
maxBytes=10485760, # 10MB
|
|
backupCount=10
|
|
)
|
|
file_handler.setLevel(getattr(logging, log_level))
|
|
|
|
# File formatter
|
|
file_formatter = logging.Formatter(
|
|
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
|
)
|
|
file_handler.setFormatter(file_formatter)
|
|
|
|
# Console handler with colors
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setLevel(getattr(logging, log_level))
|
|
|
|
# Console formatter with colors
|
|
console_formatter = ColoredFormatter(
|
|
'%(log_color)s%(asctime)s - %(name)s - %(levelname)s - %(message)s%(reset)s',
|
|
log_colors={
|
|
'DEBUG': 'cyan',
|
|
'INFO': 'green',
|
|
'WARNING': 'yellow',
|
|
'ERROR': 'red',
|
|
'CRITICAL': 'red,bg_white',
|
|
}
|
|
)
|
|
console_handler.setFormatter(console_formatter)
|
|
|
|
# Add handlers to app logger
|
|
app.logger.addHandler(file_handler)
|
|
app.logger.addHandler(console_handler)
|
|
app.logger.setLevel(getattr(logging, log_level))
|
|
|
|
# Log startup
|
|
app.logger.info(f"Application started in {app.config.get('ENV', 'development')} mode")
|
|
|
|
def get_logger(name):
|
|
"""Get a logger instance"""
|
|
return logging.getLogger(name) |