tourze/json-rpc-log-bundle
A Symfony bundle that adds structured logging to JSON-RPC services, capturing requests, responses, errors, and timing so you can trace and debug RPC calls across your PHP applications. Pairs with Tourze's JSON-RPC stack for drop-in observability.
Architecture fit. The package (tourze/json-rpc-log-bundle) addresses a cross-cutting observability concern: capturing JSON-RPC request/response traffic for audit, debugging, and incident forensics. Functionally this fits cleanly into a Laravel/PHP service tier that already exposes or consumes JSON-RPC endpoints — it should sit at the transport boundary as middleware or an event subscriber, with no domain-layer coupling. Two caveats temper that fit. First, the -bundle suffix and the vendor's typical distribution model strongly suggest Symfony Bundle conventions (DI extension classes, services.yaml, kernel registration) rather than a Laravel service provider. If so, "fit" for a Laravel stack degrades from drop-in to adapter work. Second, we have no evidence of the actual extension surface — whether logging is buffered or synchronous, where payloads are persisted, and whether PII redaction hooks exist.
Integration feasibility. Unverifiable at present. The 2.0.0 release note is a bare changelog link with no described changes, no migration guide, and no upgrade notes. For a major version bump that is a material gap: semver convention tells us something broke, but not what. Integration effort therefore cannot be estimated — it could be a namespace/constructor-signature change (hours) or a re-architected logging pipeline (days). Treat this as an unknown rather than a small unknown.
Technical risk. Elevated, and concentrated in three places:
Key questions.
Stack fit. Conditional. If the package is framework-agnostic or ships a Laravel provider, integration is a composer require plus config publish and a middleware registration — low ceremony. If it is Symfony-only, budget for a thin adapter: a Laravel middleware that delegates to the package's core logger, bypassing the bundle's DI wiring entirely. That adapter is small but becomes our code to own and test, and it is the piece most likely to break on the next upstream major.
Migration path. There is no migration to perform — we have no prior assessment and no deployed instance. That is the single piece of good news here: we are evaluating a greenfield adoption, not an upgrade, so the 2.0.0 breaking changes cost us nothing provided we pin to 2.0.x and do not attempt to consume 1.x documentation or examples. Explicitly forbid the team from copying 1.0.x snippets from the README or blog posts; assume they are stale.
Compatibility. Unconfirmed on all axes: PHP version floor, Laravel/Symfony version support, and PSR-3 logger compatibility. Require a composer why-not / dependency-resolution dry run in a throwaway branch before committing to a spike, and verify the package resolves against our current PHP and framework constraints without forcing transitive upgrades.
Sequencing.
Maintenance. The package is pre-2.x-mature (it went 1.0.2 → 2.0.0 with no published changelog detail), which is a weak signal on release discipline. If it is a Symfony bundle in a Laravel estate, we own a permanent compatibility shim — that is a recurring tax, not a one-time cost. Assign clear internal ownership and set a review trigger: if upstream ships no documented changelog for its next release, reconsider the dependency.
Support. Effectively vendor-community support only — no commercial backing in evidence. Our escalation path for a production defect is an upstream issue queue with unknown responsiveness. Mitigate by keeping the integration surface thin enough that we can vendor-patch or replace the package in under a day. Note that logging/observability is generally not worth a fragile dependency; if the risk profile stays this opaque, a first-party middleware writing to our existing PSR-3 stack is a defensible alternative and removes the third-party failure mode entirely.
Scaling. The primary scaling concern is volume, not concurrency: JSON-RPC logging generates high-cardinality, high-byte-volume data in proportion to request rate. Two things must be verified before production — that the package supports sampling or level-based filtering so we are not logging 100% of traffic in perpetuity, and that the sink (file/DB/external) has a bounded retention policy. An unbounded log sink is a slow-motion outage. Also confirm whether serialization of large payloads happens in-request, since that adds directly to p99 latency on every call.
Failure modes. Ranked by severity:
Ramp-up. Low for a developer who has wired Laravel middleware before — the concept is familiar and the spike is short. The real ramp-up cost is investigative, not educational: roughly a day of source-reading to reconstruct the 2.0.0 change surface that the release notes omit. Budget that explicitly rather than treating it as incidental. Onboarding documentation should be written during the spike, not after, since the upstream docs are demonstrably not a reliable source for this version.
Recommendation. Do not adopt on the strength of this release. The 2.0.0 publication is a changelog link and nothing more — that is insufficient to assess a major version. Proceed with a timeboxed spike and a redaction review; hold production rollout pending a readable diff and a confirmed framework-compatibility story. In parallel, evaluate the first-party alternative, because a thin in-house middleware may deliver the same observability with materially less dependency risk.
How can I help you explore Laravel packages today?