50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
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})
|