import os import logging from datetime import datetime from flask import session, request, current_app class LogHelper: @staticmethod def setup_logger(app): if not os.path.exists("logs"): os.makedirs("logs") formatter = logging.Formatter("%(asctime)s | %(levelname)s | User:%(user)s | IP:%(ip)s | %(message)s") file_handler = logging.FileHandler("logs/app.log") file_handler.setLevel(logging.INFO) file_handler.setFormatter(formatter) stream_handler = logging.StreamHandler() stream_handler.setLevel(logging.INFO) stream_handler.setFormatter(formatter) app.logger.setLevel(logging.INFO) app.logger.addHandler(file_handler) app.logger.addHandler(stream_handler) # --------------------------------------- # Log User Activity # --------------------------------------- @staticmethod def log_request(): if request.endpoint and "static" not in request.endpoint: user = session.get("user", "Anonymous") ip = request.remote_addr current_app.logger.info( f"{request.method} {request.path}", extra={"user": user, "ip": ip} ) # --------------------------------------- # Custom Action Logging # --------------------------------------- @staticmethod def log_action(action, details=""): user = session.get("user", "Anonymous") ip = request.remote_addr current_app.logger.info(f"{action} | {details}",extra={"user": user, "ip": ip})