diff --git a/backend/Dockerfile b/backend/Dockerfile index f25ee81..dd60c38 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -10,9 +10,6 @@ RUN uv sync --frozen --no-dev COPY . . -# Make the temp log dir writable since server is running rootless -RUN mkdir -p /app/logs && chmod -R 777 /app/logs - EXPOSE 8000 CMD ["sh", "-c", "uv run manage.py migrate && uv run gunicorn --bind 0.0.0.0:8000 --access-logfile - --error-logfile - --capture-output --log-level debug config.wsgi:application"] diff --git a/backend/config/logging.py b/backend/config/logging.py index 6349337..0855485 100644 --- a/backend/config/logging.py +++ b/backend/config/logging.py @@ -1,5 +1,12 @@ +from pathlib import Path + import structlog +BASE_DIR = Path(__file__).resolve().parent.parent +LOGS_DIR = BASE_DIR / "logs" + +LOGS_DIR.mkdir(parents=True, exist_ok=True) + structlog.configure( processors=[ structlog.contextvars.merge_contextvars, @@ -41,22 +48,22 @@ LOGGING = { }, "json_file": { "class": "logging.handlers.WatchedFileHandler", - "filename": "logs/json.log", + "filename": LOGS_DIR / "json.log", "formatter": "json_formatter", }, "flat_line_file": { "class": "logging.handlers.WatchedFileHandler", - "filename": "logs/flat_line.log", + "filename": LOGS_DIR / "flat_line.log", "formatter": "key_value", }, "letters_log": { "class": "logging.handlers.WatchedFileHandler", - "filename": "logs/letters.log", + "filename": LOGS_DIR / "letters.log", "formatter": "key_value", }, "scheduler_log": { "class": "logging.handlers.WatchedFileHandler", - "filename": "logs/scheduler.log", + "filename": LOGS_DIR / "scheduler.log", "formatter": "key_value", }, },