elcweb/graylog-bundle
Symfony bundle that provides a Monolog GELF handler for sending log messages to a Graylog server over UDP. Install via Composer, register the bundle in your kernel, then configure hostname, port, and the gelf handler in config.yml.
Architecture fit. This is a Symfony bundle (ElcwebGraylogBundle), not a Laravel package, so it only fits stacks that still use the legacy app/AppKernel.php bundle-registration model (Symfony 2.x/3.x era). Its entire contribution is a thin service definition (elcweb.graylog.monolog.gelf_handler) that wires Monolog to a GELF handler, plus two scalar parameters (hostname, port). There is no framework-specific value beyond that wiring; the bundle is a convenience shim over monolog/monolog and graylog2/gelf-php, both of which remain actively maintained.
Integration feasibility. Technically trivial, but functionally redundant. Everything this bundle does can be reproduced in a modern Monolog configuration with the native GelfHandler and a graylog2/gelf-php transport in a handful of lines. For a Laravel codebase this package does not integrate at all without adaptation; Laravel already exposes Monolog through config/logging.php and supports custom handlers cleanly. The "latest stable" install path (composer require elcweb/graylog-bundle) is misleading relative to the archived status and the 2016 copyright date.
Technical risk. High relative to the value delivered:
Key questions.
GelfHandler and drop this dependency entirely?composer.json, and do they conflict with our platform?Stack fit. Poor for Laravel, marginal for legacy Symfony. Laravel's logging facade is built on Monolog; adding Graylog means registering a custom Monolog handler in config/logging.php, not installing a Symfony bundle. If the platform is Symfony 4/5/6, bundles still exist conceptually but the kernel-registration pattern in the README is obsolete and the package has not been updated for Flex. In either case, the bundle is the wrong abstraction layer for a new integration.
Migration path. Recommended: do not integrate this package. Instead:
graylog2/gelf-php (and Monolog's GelfHandler) directly.graylog channel in config/logging.php using a monolog driver with the GELF handler and per-environment host/port from .env.monolog bundle's gelf handler (type: gelf) with the GELF publisher service.composer.json.Compatibility. Before any decision, inspect the package's composer.json for PHP and Symfony constraints and diff against our composer.lock. Given the 2016 provenance, expect PHP 5.6/7.x-era constraints and Symfony 2/3 bounds. Treat any modernization as a fork-and-maintain commitment, not a supportable dependency.
Sequencing.
Maintenance. Archived status means zero maintenance from upstream. Any PHP, Symfony, Monolog, or gelf-php upgrade that breaks compatibility becomes our incident. The package is also effectively undocumented beyond the README, so there is no canonical behavior reference to test against.
Support. No vendor, no community (0 stars/dependents), no active issue triage. Operational support falls entirely on the adopting team. A fork is viable but carries ongoing review and CVE-watch responsibilities for the transitive dependency chain.
Scaling. UDP is the primary scalability concern. Under high log volume, datagrams are silently dropped by the network, the kernel buffer, or Graylog's UDP input. There is no backpressure, no acknowledgment, and no retry, so log completeness degrades invisibly as throughput rises. GELF-over-UDP also has a practical message-size ceiling; large stack traces and exception dumps get truncated or require chunking (which the bundle does not advertise). TCP/TLS transport is not offered, so encryption and delivery guarantees are unavailable without a fork.
Failure modes.
composer install from resolving after an unrelated dependency bump.Ramp-up. Configuration itself is trivial (two parameters and a handler block), so ramp-up is minutes for anyone familiar with Monolog. The real ramp-up cost is educational: engineers must understand GELF, Graylog inputs, and the UDP delivery semantics to avoid the false confidence the package's simplicity conveys. A team adopting this should budget time for a runbook that documents the best-effort nature of the logs, the absence of retries, and the requirement to verify Graylog ingestion after any infrastructure change. For a greenfield integration, the native Monolog handler carries the same ramp-up with none of the abandonment risk, making this package difficult to justify on any dimension other than preserving an existing legacy configuration.
How can I help you explore Laravel packages today?