You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Send Server application logs to stderr in every deployment path #618
On Kubernetes, the Server's application logs never reach the container's log stream. They go to a file inside each container, which kubectl logs and cluster log collectors can't see, which is lost on restart, and which grows without rotation.
The image doesn't set LOG_CHANNEL (Dockerfile), so Laravel's default applies: the stack channel writes through single to storage/logs/laravel.log.
Only the published Compose file sets LOG_CHANNEL: stderr. The Helm chart's ConfigMap and the raw k8s/ manifests set no log settings, and this applies to the API, worker and scheduler pods.
The chart's values suggest DW_LOG_FORMAT: "json", but nothing in the Server reads that variable.
The config reference lists Laravel logging settings but doesn't give the default destination or say how to get JSON output for log pipelines.
Reproduced with the published durableworkflow/server:2.10.1 image. With no LOG_CHANNEL, the resolved channel is stack (single), and an error logged through Laravel appears in storage/logs/laravel.log and not on stderr. With LOG_CHANNEL=stderr it appears on stderr and not in the file.
Acceptance criteria
Every published deployment path (the image's own default, Compose, the Helm chart and the raw manifests) sends Server application logs to stderr unless the operator chooses otherwise.
Operators can switch to structured JSON lines through a documented setting, and the chart's example uses a variable the Server actually reads.
A test or chart check shows an error logged by an API, worker and scheduler process with default chart values reaches the container's stderr.
The config reference states the default log destination, how to choose JSON output and how to change the level.
Accepted as a product fix. The implementation will make stderr the image default, carry the same default through chart/raw deployment guidance, honor an operator-selected channel, and document Laravel’s existing LOG_STDERR_FORMATTER for JSON lines. DW_LOG_FORMAT will not be presented as a working setting. Qualification will exercise the real API, worker and scheduler role commands; source, built-image and published acceptance will remain distinct. Work is based on the now-merged image foundation #615, without native, shared-fixture, schema, dependency or frozen-actor changes.
Delivered in published Server 2.11.0 / Helm 0.3.0.
Qualified source 36d1627, tree e5821c4e9fae5ae9fd56deccd7f8370d3f935afd. The default image, Compose, Helm and raw manifests now select stderr; operators retain their explicit override.
Immutable image index sha256:b29157eb2cf844916debbbb3c01b3257672e0dece778a9c6fa539043a3038f02, local amd64 configuration sha256:d198219f7982b704f4149cdd99cef4e92bef4b3100a77332190bdc44fa87cfd9. PHP is 8.3.36 and the released Core is 2.10.1.
Publisher 39711732965 passes both immutable-image and matching OCI chart publication. Its actual published-image first-run check runs eight logging cases: API/queue/scheduler with default and JSON output, explicit file override and level filtering. The probe requires the actual role to invoke Laravel's default logger and checks stderr versus stdout/file, plus structured records. Published-image TLS/certificate-refusal, source-free bootstrap and protocol checks also pass.
Source chart/kind checks and all 28 local Helm controls passed before merge. Website #352 delivered logging/configuration guidance in all eight locales. The supported JSON setting is the real LOG_STDERR_FORMATTER; the unread chart example was corrected.
This closes the logging obligation. The separate activity-lease installed-consumer qualification stays on Workflow #878; no Cloud deployment or native release is implied. The optional evidence ZIP download timed out on the Azure delivery path, so no independent ZIP-content audit is claimed. The linked publisher's actual checks and the independently pulled immutable image identities are the evidence here.
Activity
rmcdaniel commentedon Oct 21, 2026
Accepted as a product fix. The implementation will make stderr the image default, carry the same default through chart/raw deployment guidance, honor an operator-selected channel, and document Laravel’s existing LOG_STDERR_FORMATTER for JSON lines. DW_LOG_FORMAT will not be presented as a working setting. Qualification will exercise the real API, worker and scheduler role commands; source, built-image and published acceptance will remain distinct. Work is based on the now-merged image foundation #615, without native, shared-fixture, schema, dependency or frozen-actor changes.
rmcdaniel commentedon Oct 22, 2026
Delivered in published Server 2.11.0 / Helm 0.3.0.
LOG_STDERR_FORMATTER; the unread chart example was corrected.This closes the logging obligation. The separate activity-lease installed-consumer qualification stays on Workflow #878; no Cloud deployment or native release is implied. The optional evidence ZIP download timed out on the Azure delivery path, so no independent ZIP-content audit is claimed. The linked publisher's actual checks and the independently pulled immutable image identities are the evidence here.