517c30ba0e
- Added logging configuration to WSGI for persistent log collection. - Updated Docker Compose files for local and development environments, including Redis, PostgreSQL, and Grafana services. - Introduced Promtail configuration for log scraping and integration with Loki. - Created application log directory in Dockerfile for log persistence.
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
"""
|
|
WSGI config for rad project.
|
|
|
|
It exposes the WSGI callable as a module-level variable named ``application``.
|
|
|
|
For more information on this file, see
|
|
https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/
|
|
"""
|
|
|
|
import os
|
|
|
|
from django.core.wsgi import get_wsgi_application
|
|
from loguru import logger
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Configure Loguru sinks early so app imports see consistent logging.
|
|
# Log to stdout (so `docker logs` shows messages) and to a file at
|
|
# `/var/log/rad/app.log` for persistent collection / host tailing.
|
|
try:
|
|
# ensure directory exists
|
|
log_dir = Path("/var/log/rad")
|
|
log_dir.mkdir(parents=True, exist_ok=True)
|
|
# Add stdout sink (if not already added by other code)
|
|
logger.remove() # remove default handlers to avoid duplicate lines
|
|
logger.add(sys.stdout, level="INFO", enqueue=True, backtrace=False, diagnose=False)
|
|
# Add rotating file sink for persistence in container. Use JSON lines
|
|
# (serialize=True) to make logs easy to query in Loki/Grafana.
|
|
logger.add(
|
|
str(log_dir / "app.log"),
|
|
rotation="10 MB",
|
|
retention="10 days",
|
|
level="DEBUG",
|
|
enqueue=True,
|
|
serialize=True,
|
|
)
|
|
except Exception:
|
|
# Best-effort only — don't crash WSGI startup if logging can't be configured
|
|
try:
|
|
logger.add(sys.stderr)
|
|
except Exception:
|
|
pass
|
|
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rad.settings")
|
|
|
|
application = get_wsgi_application()
|