Skip to content

Commit 6003ed8

Browse files
committed
Merge branch 'dev'
2 parents 15c2ede + 43758a1 commit 6003ed8

2 files changed

Lines changed: 28 additions & 23 deletions

File tree

app/__init__.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,40 +8,40 @@
88

99
def create_app(config_class=None):
1010
app = Flask(__name__)
11-
12-
# Configure the app
11+
1312
if config_class:
1413
app.config.from_object(config_class)
1514
else:
1615
app.config.from_object('app.config.Config')
16+
17+
# Set up the dedicated student logger
18+
student_logger = setup_logger()
19+
20+
# Attach handlers and level to Flask's native logger to ensure all logs write to the same file
21+
app.logger.handlers = student_logger.handlers[:]
22+
app.logger.setLevel(student_logger.level)
23+
app.logger.propagate = False # Prevent double logging
1724

18-
19-
# Initialize logger
20-
logger = setup_logger('student_logger', log_file='app.log')
2125
app.logger.info("Student Management API started successfully.")
2226

23-
# Initialize database and migration
27+
# init db & migrations
2428
db.init_app(app)
2529
migrate.init_app(app, db)
2630

27-
# Import models inside app context
2831
with app.app_context():
2932
from . import models
30-
31-
# Import and register blueprints here (after db/models are ready)
33+
3234
from .routes import student_bp
3335
app.register_blueprint(student_bp, url_prefix='/students')
34-
35-
# Home route
36+
3637
@app.route('/')
3738
def home():
3839
app.logger.info("Home page accessed")
3940
return "Welcome to the Student Management API!"
40-
41-
# Health check route
41+
4242
@app.route('/health')
4343
def health():
4444
app.logger.info("Health check accessed")
4545
return jsonify({"status": "ok"}), 200
46-
47-
return app
46+
47+
return app

app/logger.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
11
import logging
22
import os
33

4-
def setup_logger(name, log_file='app.log', level=logging.DEBUG):
4+
def setup_logger(name='student_logger', log_file=None, level=logging.DEBUG):
5+
if log_file is None:
6+
# Use absolute path based on your repo root
7+
repo_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
8+
log_file = os.path.join(repo_root, 'student_api.log')
59

10+
# Create logger with specified name
611
logger = logging.getLogger(name)
712
logger.setLevel(level)
8-
9-
# Avoid adding multiple handlers if logger already exists
13+
14+
# Avoid multiple handlers added on repeated calls
1015
if not logger.hasHandlers():
1116
# Console handler
1217
console_handler = logging.StreamHandler()
1318
console_handler.setLevel(level)
1419
console_formatter = logging.Formatter(
1520
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
1621
)
17-
console_handler.setFormatter(console_formatter)
18-
logger.addHandler(console_handler)
19-
22+
console_handler.setFormatter(console_formatter)
23+
logger.addHandler(console_handler)
24+
2025
# File handler
2126
file_handler = logging.FileHandler(log_file)
2227
file_handler.setLevel(level)
@@ -25,5 +30,5 @@ def setup_logger(name, log_file='app.log', level=logging.DEBUG):
2530
)
2631
file_handler.setFormatter(file_formatter)
2732
logger.addHandler(file_handler)
28-
29-
return logger
33+
34+
return logger

0 commit comments

Comments
 (0)