Flask 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 Flask’s own logging.

Write a log

Optional. Passed as logging’s extra=. With the Cloud package on, these appear under context. The default text formatter leaves them out.


Exceptions

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


Flask only

The form uses Flask’s app.logger, which is the standard library logger.

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

Process output

stdout, stderr, and the Cloud socket. Each line is the exact text written, and it is still written there.

Time Stream Line
01:00:02 Cloud socket {"message":"Starting gunicorn 26.2.0","context":{},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T01:00:02.942916+00:00","extra":{"logger":"gunicorn.error"}}
01:00:02 Cloud socket {"message":"Listening at: http://[::]:3000 (24)","context":{},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T01:00:02.943699+00:00","extra":{"logger":"gunicorn.error"}}
01:00:02 Cloud socket {"message":"Using worker: sync","context":{},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T01:00:02.943801+00:00","extra":{"logger":"gunicorn.error"}}
01:00:02 Cloud socket {"message":"Booting worker with pid: 30","context":{},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T01:00:02.946077+00:00","extra":{"logger":"gunicorn.error"}}
01:00:02 Cloud socket {"message":"Booting worker with pid: 32","context":{},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T01:00:03.012463+00:00","extra":{"logger":"gunicorn.error"}}
01:00:03 Cloud socket {"message":"Booting worker with pid: 34","context":{},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T01:00:03.143729+00:00","extra":{"logger":"gunicorn.error"}}
01:00:03 Cloud socket {"message":"Control socket listening at /var/www/.gunicorn/gunicorn.ctl","context":{},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T01:00:03.403157+00:00","extra":{"logger":"gunicorn.error"}}
01:00:16 Cloud socket {"message":"yoyo","context":{"cloud_request_id":"fe204a4b-4c76-44d0-8371-c1eb1e47dd94"},"level":200,"level_name":"INFO","channel":"production","datetime":"2026-10-15T01:00:16.886014+00:00","extra":{"logger":"app"}}
01:01:42 Cloud socket {"message":"heyhey!","context":{"cloud_request_id":"559f1458-eb60-45e4-ae14-11bb9c6441dc"},"level":300,"level_name":"WARNING","channel":"production","datetime":"2026-10-15T01:01:42.022915+00:00","extra":{"logger":"app"}}
01:03:10 Cloud socket {"message":"heyhey!","context":{"cloud_request_id":"0cee6f7d-61b7-440d-bdda-5620a009dcb5"},"level":300,"level_name":"WARNING","channel":"production","datetime":"2026-10-15T01:03:10.916453+00:00","extra":{"logger":"app"}}
01:03:16 Cloud socket {"message":"heyhey!","context":{"cloud_request_id":"71dfe64a-c5bb-4b50-a42b-3acfc41a2da7"},"level":300,"level_name":"WARNING","channel":"production","datetime":"2026-10-15T01:03:16.402116+00:00","extra":{"logger":"app"}}
01:03:38 Cloud socket {"message":"heyhey!","context":{"cloud_request_id":"ab862db0-04f0-415f-8543-7f343ff96c65"},"level":300,"level_name":"WARNING","channel":"production","datetime":"2026-10-15T01:03:38.740552+00:00","extra":{"logger":"app"}}