36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
import logging
|
|
import os
|
|
from logging.handlers import RotatingFileHandler
|
|
|
|
|
|
class LoggerConfig:
|
|
"""A class to configure logging for the Flask application."""
|
|
|
|
LOG_DIR = "logs" # Define the log directory
|
|
|
|
@staticmethod
|
|
def init_logger(app):
|
|
"""Initializes separate log files for INFO, ERROR, and WARNING levels."""
|
|
|
|
# Ensure the logs directory exists
|
|
if not os.path.exists(LoggerConfig.LOG_DIR):
|
|
os.makedirs(LoggerConfig.LOG_DIR)
|
|
|
|
# Separate loggers for different levels
|
|
LoggerConfig._setup_logger(app.logger, "info.log", logging.INFO)
|
|
LoggerConfig._setup_logger(app.logger, "error.log", logging.ERROR)
|
|
LoggerConfig._setup_logger(app.logger, "warning.log", logging.WARNING)
|
|
|
|
app.logger.info("Logger has been initialized for Flask application.")
|
|
|
|
@staticmethod
|
|
def _setup_logger(logger, filename, level):
|
|
"""Helper method to configure loggers for specific levels."""
|
|
log_file_path = os.path.join(LoggerConfig.LOG_DIR, filename)
|
|
log_handler = RotatingFileHandler(log_file_path, maxBytes=100000, backupCount=3)
|
|
log_handler.setLevel(level)
|
|
log_formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
|
|
log_handler.setFormatter(log_formatter)
|
|
|
|
logger.addHandler(log_handler)
|