Skip to content

Stop documenting the web /logs/ URL — it no longer exists (#1440) - #1441

Merged
jonfroehlich merged 1 commit into
masterfrom
1440-logs-url-docs
Jul 29, 2026
Merged

Stop documenting the web /logs/ URL — it no longer exists (#1440)#1441
jonfroehlich merged 1 commit into
masterfrom
1440-logs-url-docs

Conversation

@jonfroehlich

Copy link
Copy Markdown
Member

Fixes #1440. Docs-only (plus four comments/docstrings that repeated the same stale claim).

Problem

docs/DEPLOYMENT.md tells you to read logs at a web /logs/ URL. That route is gone — every documented path 404s on both hosts:

/logs/                 -> 404      /logs/httpd-access.log -> 404
/logs/debug.log        -> 404      /logs/debug.log.1      -> 404
/logs/buildlog.txt     -> 404

The response carries Server: gunicorn and Django's custom 404 template, so Apache has no /logs/ alias any more and the request falls through to Django. Not a permissions or missing-file problem — the route doesn't exist.

Found while verifying the #1283 deploy. Per @jonfroehlich, web log access is no longer wanted and UW CSE IT has trouble maintaining it, so the fix is to stop documenting it rather than restore it.

Changes

  • DEPLOYMENT.md: rewrote the log-locations table and replaced "Accessing Logs via Web" with "Reading debug.log over SSH". buildlog.txt is now honestly described as reachable only via the deploy email; the httpd-*.log files as not reachable without CSE IT.
  • DEPLOYMENT.md: two "verify the deploy via the build log" steps linked to URLs that 404. They now point at /version.json — and say to match git_sha, not built_at.
  • CLAUDE.md, settings.py, version.py, test docstring: the same claim appeared in four more places, several as the stated reason the log must live inside MEDIA_ROOT. That constraint is still real, but the reason isn't the web URL — media/ is the tree bind-mounted to the shared CSE filesystem, so living inside it is what makes debug.log readable over SSH at all. With no shell on these hosts, a log written anywhere else is a log nobody can read.

MEDIA_ROOT is still a web-served tree, so the INFO-not-DEBUG conservatism stays — now stated on its own terms instead of resting on /logs/.

Also cross-references #1439 where the docs tell you to check debug.log.1: rotation is unreliable under multiple Gunicorn workers, so a rotated file may be far smaller than 5 MB and missing records.

Verification

  • All 5 /logs/ paths curl-tested against both hosts.
  • grep -rn '/logs/' across the repo — every surviving mention now says it's gone.
  • 724 tests pass.

🤖 Generated with Claude Code

Every path under /logs/ 404s on both prod and test (verified by curl
2026-07-28): /logs/, debug.log, debug.log.1, buildlog.txt, httpd-access.log.
The response carries Server: gunicorn and Django's custom 404 template, so
Apache has no /logs/ alias any more and the request falls through to Django.
It is not a permissions or missing-file problem — the route is gone.

Per the maintainer, web access to logs is no longer wanted and UW CSE IT has
trouble maintaining it, so the fix is to stop documenting it rather than to
restore it. Stale docs are worst exactly when you need them: diagnosing a live
problem.

- DEPLOYMENT.md: rewrite the log table and replace "Accessing Logs via Web"
  with "Reading debug.log over SSH". buildlog.txt is now honestly described as
  reachable only via the deploy email; the httpd-*.log files as not reachable.
- DEPLOYMENT.md: the two "verify the deploy via buildlog.txt" links pointed at
  URLs that 404, so point them at /version.json instead (git_sha, not built_at).
- CLAUDE.md, settings.py, version.py, test docstring: the same claim appeared in
  four more places, several of them as the stated reason the log must sit inside
  MEDIA_ROOT. That reason is still valid but it isn't the web URL — media/ is the
  tree bind-mounted to the shared CSE filesystem, so living inside it is what
  makes debug.log readable over SSH at all.

Note MEDIA_ROOT is still a web-served tree, so the INFO-not-DEBUG conservatism
stays and is now stated on its own terms rather than resting on /logs/.

Also cross-references #1439 where DEPLOYMENT.md tells you to check debug.log.1:
rotation is unreliable under multiple Gunicorn workers, so a rotated file may be
much smaller than 5 MB and may be missing records.

Tests: 724 pass.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jonfroehlich
jonfroehlich merged commit 0954a76 into master Jul 29, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: the /logs/ web URL no longer exists — DEPLOYMENT.md is stale

1 participant