The new updates of partners and user
Made-with: Cursor
This commit is contained in:
58
eventify_logger/services.py
Normal file
58
eventify_logger/services.py
Normal file
@@ -0,0 +1,58 @@
|
||||
"""
|
||||
Central logging service for EventifyLogger.
|
||||
"""
|
||||
import json
|
||||
|
||||
from eventify_logger.models import EventifyLogger
|
||||
|
||||
|
||||
def _get_client_ip(request):
|
||||
"""Extract client IP from request."""
|
||||
if not request:
|
||||
return None
|
||||
x_forwarded = request.META.get("HTTP_X_FORWARDED_FOR")
|
||||
if x_forwarded:
|
||||
return x_forwarded.split(",")[0].strip() or None
|
||||
return request.META.get("REMOTE_ADDR")
|
||||
|
||||
|
||||
def _get_user_agent(request):
|
||||
"""Extract User-Agent from request."""
|
||||
if not request:
|
||||
return None
|
||||
return request.META.get("HTTP_USER_AGENT", "")
|
||||
|
||||
|
||||
def log(logger_type, logger_message, request=None, user=None, logger_data=None):
|
||||
"""
|
||||
Create an EventifyLogger record.
|
||||
|
||||
Args:
|
||||
logger_type: 'info' | 'warning' | 'error' | 'critical'
|
||||
logger_message: str
|
||||
request: optional HttpRequest (used for IP, user-agent, user if not provided)
|
||||
user: optional User (overrides request.user)
|
||||
logger_data: optional str or dict (dict will be JSON-serialized)
|
||||
"""
|
||||
try:
|
||||
resolved_user = user
|
||||
if resolved_user is None and request and hasattr(request, "user"):
|
||||
resolved_user = getattr(request.user, "is_authenticated", False) and request.user or None
|
||||
|
||||
ip_address = _get_client_ip(request) if request else None
|
||||
user_agent = _get_user_agent(request) if request else None
|
||||
|
||||
if isinstance(logger_data, dict):
|
||||
logger_data = json.dumps(logger_data)
|
||||
|
||||
EventifyLogger.objects.create(
|
||||
logger_type=logger_type,
|
||||
logger_message=str(logger_message)[:10000], # cap message length
|
||||
logger_data=logger_data[:10000] if logger_data else None, # cap data length
|
||||
logged_user=resolved_user,
|
||||
logged_ip_address=ip_address,
|
||||
logged_user_device=None, # defer UA parsing
|
||||
logged_user_browser=user_agent[:250] if user_agent else None,
|
||||
)
|
||||
except Exception:
|
||||
pass # Never let logging break the app
|
||||
Reference in New Issue
Block a user