Added request ID to loggging

This commit is contained in:
2025-04-06 01:46:41 +10:30
parent 92bfa02a3d
commit 4a9db0fd9f
2 changed files with 30 additions and 7 deletions
+11
View File
@@ -6,6 +6,7 @@ from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from logger import logger
import uuid
import logging
app = None
db = None
@@ -25,6 +26,16 @@ app.register_blueprint(api_bp)
app.register_blueprint(ui_bp)
@app.before_request
def assign_request_id():
g.request_id = str(uuid.uuid4()) # Generate a unique request ID
logger.info(f"Assigned request ID: {g.request_id} for {request.path}")
@app.after_request
def log_request_id(response):
response.headers['X-Request-ID'] = g.request_id # Include in response headers
return response
@app.context_processor
def inject_user_roles():
try:
+19 -7
View File
@@ -1,18 +1,30 @@
print("Inside logger.py")
# logger.py
import logging
from colorlog import ColoredFormatter
import os
# Custom filter to include the function name
class FunctionNameFilter(logging.Filter):
class RequestFilter(logging.Filter):
"""Custom filter to add request_id from Flask's g object when available"""
def filter(self, record):
record.funcName = record.funcName if hasattr(record, 'funcName') else '<unknown>'
# Initialize request_id with default value
record.request_id = 'no-context'
# Try to get Flask's g object only when needed
try:
from flask import g
if hasattr(g, 'request_id'):
record.request_id = g.request_id
except RuntimeError: # Outside of application context
pass
except ImportError: # Flask not available
pass
return True
# Define the colorized log format
# Define the log format with request_id
log_format = (
"%(log_color)s%(asctime)s - %(levelname)s - %(funcName)s - %(message)s"
"%(log_color)s%(asctime)s - %(levelname)s - RequestID:[%(request_id)s] - %(funcName)s - %(message)s"
)
date_format = "%Y-%m-%d %H:%M:%S"
@@ -36,7 +48,7 @@ handler.setFormatter(formatter)
# Configure the logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logger.addFilter(FunctionNameFilter())
logger.addFilter(RequestFilter())
logger.addHandler(handler)
# Ensure the logs directory exists