FastAPI on Laravel Cloud

Logs

Write a line here, then compare this page's output with Application logs.

Minimum level is Info. laravel-cloud-logging is on. JSON goes to the Cloud socket when that socket accepts it, and to stdout when it does not. Set LARAVEL_CLOUD_LOGGING=false and redeploy to use the standard library logger.

Write a log

Optional. Passed as logging extra=. With the package on, JSON puts these under context and the line format prints key=value. The standard library formatter leaves them out.

Exceptions

Log a caught exception, or let the framework record an unhandled one.

FastAPI only

Uvicorn's error log goes through the same formatter as this form. Uvicorn's access logger is off, which is the package default, because Cloud's proxy already records requests. The button still calls uvicorn.access the same way Uvicorn writes a request line.

Cloud’s proxy writes access logs for each request. Those are not in this pane.

Process output

stdout, stderr, and the Cloud socket. Each row is one line, without its trailing newline, and the same bytes were written to that destination.

TimeStreamLine
02:27:50Cloud socket
{"message":"Started server process [25]","context":{},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T02:27:50.686733+00:00","extra":{"logger":"uvicorn.error"}}
02:27:50Cloud socket
{"message":"Waiting for application startup.","context":{},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T02:27:50.687320+00:00","extra":{"logger":"uvicorn.error"}}
02:27:50Cloud socket
{"message":"Application startup complete.","context":{},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T02:27:50.688183+00:00","extra":{"logger":"uvicorn.error"}}
02:27:50Cloud socket
{"message":"Uvicorn running on http://:3000 (Press CTRL+C to quit)","context":{},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T02:27:50.691566+00:00","extra":{"logger":"uvicorn.error"}}