Stop documenting the web /logs/ URL — it no longer exists (#1440) - #1441
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1440. Docs-only (plus four comments/docstrings that repeated the same stale claim).
Problem
docs/DEPLOYMENT.mdtells you to read logs at a web/logs/URL. That route is gone — every documented path 404s on both hosts:The response carries
Server: gunicornand 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 "Readingdebug.logover SSH".buildlog.txtis now honestly described as reachable only via the deploy email; thehttpd-*.logfiles 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 matchgit_sha, notbuilt_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 insideMEDIA_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 makesdebug.logreadable over SSH at all. With no shell on these hosts, a log written anywhere else is a log nobody can read.MEDIA_ROOTis 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
/logs/paths curl-tested against both hosts.grep -rn '/logs/'across the repo — every surviving mention now says it's gone.🤖 Generated with Claude Code