Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Json Rpc Log Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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:

  • Undocumented breaking changes. Version 1.0.2 → 2.0.0 is a major jump on a package that never reached 1.x maturity. Early-lifecycle majors frequently coincide with abandoned extension points rather than careful deprecation cycles.
  • Framework mismatch. If this is Symfony-first, we absorb the maintenance cost of a compatibility shim, and upstream changes may break us without warning.
  • Logging blast radius. Traffic-logging middleware sits on the hot path of every JSON-RPC call. A defect here is not a degraded feature — it is a service-wide failure mode (blocked requests, unbounded buffer growth, disk exhaustion).

Key questions.

  1. What specifically changed in 2.0.0, and is there a migration guide? (Blocking — cannot size the upgrade without it.)
  2. Is this a Laravel service provider, a Symfony bundle, or framework-agnostic? What is the supported PHP/Laravel version matrix?
  3. How are captured payloads stored — file, PSR-3 logger, database, external sink? Is retention configurable?
  4. Does it support field-level redaction/masking for credentials, tokens, and personal data before persistence?
  5. Is logging synchronous or buffered/async, and what happens under sustained load or sink unavailability?
  6. What is the maintenance signal — release cadence, open-issue volume, bus factor, CI status?
  7. Are there existing, better-supported alternatives (Laravel middleware, Telescope, OpenTelemetry instrumentation) that cover this need?

Integration Approach

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.

  1. Spike (timeboxed, ~1 day). Install in a scratch branch, wire it to a non-production JSON-RPC endpoint, confirm it logs and that we can control what it logs.
  2. Gap review. Read the actual source for the 2.0.0 diff — constructor signatures, config keys, storage interface. The changelog will not tell us; the code will.
  3. Redaction gate. If field masking is absent or inadequate, do not proceed to a shared environment. Build redaction upstream of the sink or stop here.
  4. Staging soak. Enable under representative traffic; watch latency delta, memory, and sink growth over at least one full traffic cycle.
  5. Production, single service. Roll out to the lowest-risk JSON-RPC surface behind a config flag, with a documented kill switch.
  6. Expand. Only after a clean soak, extend to remaining services.

Operational Impact

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:

  • Hot-path blocking. Synchronous logging against a slow or unavailable sink stalls JSON-RPC responses. Verify fail-open behavior: logging failure must never fail the RPC call.
  • Disk/table exhaustion. No retention cap plus full-payload capture fills the volume or bloats the database. Cap it at the infrastructure level regardless of package config.
  • Sensitive data leakage. Unredacted tokens, auth headers, or personal data written to logs — a compliance incident, not an engineering one. This is the highest-consequence failure and the cheapest to prevent.
  • Silent no-op after upgrade. Given the undocumented 2.0.0 changes, the most likely near-term failure is that logging quietly stops after an upgrade while everything else looks healthy. Add a synthetic health check that asserts a known request appears in the sink.
  • Compatibility break on framework upgrade. Adapter breaks during a Laravel/PHP bump, discovered late. Covered by the integration test in the migration path.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log
hsluv/hsluv
seampact/codegen
seampact/hooks
seampact/ir
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk