Added request ID to loggging
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user