docs: add paste service to Workflow; clarify app-log vs stdout in Deploy
- Workflow: paste.rethinkstudios.io pastebin section — pb() function
(recommended) + alias alternative in content tabs, usage, expires note,
creation rate-limit warning.
- Deploy: warning admonition distinguishing ${LOGS_DIR} (app logger, to
disk) from container stdout/stderr where startup crashes and uncaught
exceptions land; sys.excepthook snippet to route them into the log file.
Signed-off-by: disqualifier <dev@disqualifier.me>
This commit is contained in:
@@ -85,6 +85,21 @@ flowchart LR
|
||||
create the dir; you **uncomment** the line and pick the container path.
|
||||
- **Named volumes** (`cache`, …) — yours; Docker owns them, no host paths to manage.
|
||||
|
||||
!!! warning "Two kinds of logs — and crashes go to the other one"
|
||||
`${LOGS_DIR}` holds **only** what your app writes to disk through its logger
|
||||
(e.g. `log_setup` writing a file) — your own structured logging. It does **not**
|
||||
capture the process's stdout/stderr, and that's where **startup crashes and
|
||||
uncaught exceptions land** — a traceback from a failed import or a missing file
|
||||
never reaches your logger. So if a service dies on startup, or you don't see the
|
||||
error in your log files, it's in the process output, not `${LOGS_DIR}`. Make
|
||||
fatal errors visible — and to route uncaught exceptions into your log file too,
|
||||
install a top-level hook:
|
||||
|
||||
```python
|
||||
import sys, logging
|
||||
sys.excepthook = lambda *exc: logging.getLogger().critical("uncaught", exc_info=exc)
|
||||
```
|
||||
|
||||
!!! success "Same file, both places"
|
||||
Locally, `docker compose up` needs nothing set — the `${VAR:-./default}`
|
||||
fallbacks use `./logs` / `./config`. When deployed, the ops tooling sets the
|
||||
|
||||
Reference in New Issue
Block a user