Files
beabigegg b0c86302ff 1ST
2025-08-29 16:25:46 +08:00

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)