presta/datadog-bundle
Symfony bundle for Datadog integration: send StatsD metrics and APM traces from your app with minimal configuration, plus helpers for timing code and tracking custom events. A lightweight way to add Datadog monitoring to existing Symfony projects.
monolog/monolog and symfony/http-foundation now declared explicitly rather than relied on transitively, and PHPStan at level max with an empty baseline. That is a maintainer investing in correctness, not just bumping version constraints. The build-in-house estimate is unchanged (~1 day), but the maintenance-cost premium we previously attached to adopting it is now much smaller — for Symfony services.Bundle class, DI extension, and config tree are dead weight, and the Symfony 5/6.0–6.3 removal makes it more Symfony-specific, not less. Our equivalent path is a Monolog channel/service provider or the Datadog Agent's file-tailing collection.Consider it as a genuine runtime dependency (a change from the previous "reading material only" posture) when:
composer require unless you instantiate DatadogHandler yourself or redefine its service.Look elsewhere — or build in-house — when:
DatadogHandler manually or redefine its service. The constructor now takes TokenStorageInterface (security.token_storage) instead of the removed Symfony\Component\Security\Core\Security. Default bundle configuration is unaffected; hand-wired services are not.dd-trace path remains the stronger route; a third-party handler still layers its own conventions on top.Recommended posture: for our Laravel estate, the decision is unchanged — do not add it; framework mismatch is now the sole and sufficient reason, and the abandonment argument should be dropped from the write-up. For any Symfony 6.4/7.x service in the portfolio, re-open this as a legitimate adopt-and-maintain candidate rather than a copy-the-pattern exercise, and verify current adoption/community signals before signing off.
For executives (one paragraph). We re-reviewed the small open-source Symfony bundle that ships application logs to Datadog, because it just shipped a major release. The previous objection — that it looked abandoned — is resolved: it now supports Symfony 7.x and PHP 8.5, declares its dependencies properly, and enforces top-tier static analysis in CI. The remaining objection is fit: it is built for Symfony, not our Laravel stack, so it cannot be a dependency for our primary applications. Recommendation: keep it out of our Laravel services — use Datadog's Agent-based log collection or a roughly one-day in-house handler — but treat it as the preferred option for any Symfony 6.4/7.x service we own, replacing the earlier "copy the pattern, don't take the package" guidance there. Net effect: no change in cost for Laravel, and one credible, maintained option added for Symfony.
For engineering leads. v2.0.0 is a clean modernization, not a rewrite: Symfony ^6.4|^7.0, PHP 8.1–8.5, Monolog 3, monolog/monolog and symfony/http-foundation now explicit. Two breaking changes matter only if you touch the wiring — DatadogHandler takes TokenStorageInterface instead of the removed Security class, and PrestaDatadogExtension now extends Extension (it's final, so internal). Default bundle config needs no changes. On Laravel, our conclusion is unchanged: build the ~100-line handler or lean on the Agent, and own retry/backpressure and the Datadog API version ourselves. If we ever stand up a Symfony service, adopt this rather than reimplementing it — the maintenance signal is now good enough that forking is the worse trade.
For security/compliance. The "cannot assess ongoing risk" finding from the prior review no longer applies. The project shows active maintenance: a current major release with a documented changelog and upgrade notes, an explicit supported-version matrix, and static analysis at maximum level with an empty baseline — a positive signal for code quality and review discipline. Residual risks to record: single-vendor maintenance (bus factor), no vendor SLA, and adoption/community-scrutiny metrics that were not refreshed in this release data and should be re-checked. For Symfony 6.4/7.x targets this is now a defensible approve-with-conditions; for Laravel it remains out of scope on framework grounds alone.
The one-line version: the abandonment concern is gone and the Symfony story is now solid — but it is still a Symfony bundle, so Laravel copies the pattern and Symfony adopts the package.
How can I help you explore Laravel packages today?