This commit is contained in:
2026-02-02 12:27:27 +05:30
parent 2ef8a9aff9
commit 5b14adc7c3
9 changed files with 4252 additions and 377 deletions

View File

@@ -1,3 +1,6 @@
import logging
import logging.handlers
import os
from flask import Flask, redirect, url_for
from app.config import Config
from app.services.db_service import db
@@ -8,6 +11,9 @@ def create_app():
# Initialize extensions
db.init_app(app)
# Configure logging
setup_logging(app)
# Register blueprints
register_blueprints(app)
@@ -22,6 +28,68 @@ def create_app():
return app
def setup_logging(app):
"""Configure comprehensive logging for debugging"""
# Ensure logs directory exists
logs_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'logs')
os.makedirs(logs_dir, exist_ok=True)
# Create logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# Remove existing handlers
logger.handlers.clear()
# Create formatters
detailed_formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
# File handler for all logs
file_handler = logging.handlers.RotatingFileHandler(
os.path.join(logs_dir, 'app.log'),
maxBytes=10485760, # 10MB
backupCount=5
)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(detailed_formatter)
logger.addHandler(file_handler)
# File handler for RA bill fetching only
ra_bill_handler = logging.handlers.RotatingFileHandler(
os.path.join(logs_dir, 'ra_bill_fetch.log'),
maxBytes=5242880, # 5MB
backupCount=5
)
ra_bill_handler.setLevel(logging.DEBUG)
ra_bill_handler.setFormatter(detailed_formatter)
# Only attach to relevant loggers
ra_loggers = ['app.routes.dashboard', 'app.routes.file_report']
for logger_name in ra_loggers:
logging.getLogger(logger_name).addHandler(ra_bill_handler)
# Console handler for important messages
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_formatter = logging.Formatter(
'%(levelname)s - %(name)s - %(message)s'
)
console_handler.setFormatter(console_formatter)
logger.addHandler(console_handler)
# Suppress verbose libraries
logging.getLogger('werkzeug').setLevel(logging.WARNING)
logging.getLogger('sqlalchemy.engine').setLevel(logging.WARNING)
app.logger.info("Logging initialized successfully")
app.logger.info(f"Log files location: {logs_dir}")
def register_blueprints(app):
from app.routes.auth import auth_bp
from app.routes.user import user_bp