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

Onelog Bundle Laravel Package

koderhut/onelog-bundle

Symfony bundle that integrates OneLogin's PHP SAML toolkit, adding SAML 2.0 service-provider authentication, configurable identity providers, attribute mapping, and firewall-based single sign-on to Symfony applications. It simplifies SSO setup through bundle configuration.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What changed since the last review. Release 1.2.0 adds middleware for message and context pre-processing, letting the logger accept objects and pull data from them before delegating to the underlying logger. Two things follow from this, and they point in opposite directions:

  1. The maintainer is not inert. The prior assessment leaned heavily on a ~7-year release gap as the primary evidence of absence of a maintenance counterparty. A tagged 1.2.0 release contradicts the strongest version of that claim. This is a material correction.
  2. The feature is not a differentiator. "Message and context pre-processing" is Monolog's ProcessorInterface — a first-class, framework-native concept in Laravel via config/logging.php tap/processors arrays and $logger->pushProcessor(). The package is reimplementing a solved problem behind a new name.

Architecture fit — still poor. Nothing in 1.2.0 addresses the structural blockers. The -bundle suffix and koderhut vendor namespace still indicate a Symfony bundle registered through a Kernel and DI extension; Laravel has no boot surface for it. The release adds an extension point inside the package's own pipeline, which increases rather than decreases the amount of proprietary surface an adapter would have to bridge.

Signal Value Change Implication
Stars 1 — Still no community validation
Dependents 0 — Still no external consumer of the API
Latest release 1.2.0 new Contradicts "dormant"; does not establish cadence
Prior release gap ~7 years — One data point does not make a cadence
Score 0.235 — Bottom tier composite

The honest read: a single additive minor release after a long quiet period is evidence of life, not evidence of a support commitment. One release tells you nothing about the next one. Treat it as raising the maintainer-reachability question from "probably no" to "unknown, worth one email," not as resolving it.

The new feature, evaluated as a TPM. Middleware-based context enrichment has four properties that matter:

Property Assessment
Novelty vs. Monolog None. ProcessorInterface covers message and context mutation before handler dispatch.
Terminology fit Poor. "Middleware" in Laravel means HTTP middleware; a maintainer searching for this will land in the wrong abstraction and find no docs.
Lock-in surface Negative. Each hop in the package's middleware chain is a place its pipeline differs from Monolog's, complicating a "extract the useful bit" strategy.
New risk introduced Object hydration in the logging path. This is the significant change.

New technical risk — object traversal in the log path. "Receive objects and retrieve data directly from it" means the logging subsystem now executes application code (getters, magic __get, lazy relations) during log emission. That is a high-blast-radius coupling:

  • Lazy-load side effects. A getter on an Eloquent model triggers a query. Logging now performs I/O on a path that is supposed to be observational.
  • Circular references. Object graphs without cycle detection hang or overflow when serialized. Logging libraries typically handle this; a bespoke 1.2.0 implementation may not.
  • PII leakage. Hydrating an object wholesale into a sink is the fastest route to writing customer data into log storage. This is a compliance concern on any audited path.
  • Cost multiplication. Object traversal cost is paid per sink per event under fan-out.

None of this is disqualifying on its own — Monolog processors can do exactly the same damage — but it converts a passive dependency into an active participant in the request path.

Technical risk — high, structurally, with one item downgraded. The absence-of-counterparty risk moves from high to unknown. Everything else stands: MIT grants no security-response obligation, no CVE path, no upgrade commitment. The secondary risk is now sharper — logging is cross-cutting, and 1.2.0 moves it closer to application internals.

Key questions to resolve before any further investment:

  • What are the 1.2.0 constraints? Read composer.json — php and symfony/*. This single check still decides the ticket. A 1.2.0 bump may or may not have moved off PHP 5.6/7.x.
  • Is 1.2.0 dated, and is there a stated roadmap? One release is not a cadence. Ask the maintainer directly; a one-line reply changes the maintenance calculus more than any metadata field.
  • Does the middleware chain map onto Monolog processors, or replace them? If it wraps, the migration target is small. If it replaces, it's a parallel pipeline you'd have to own.
  • How does object serialization handle cycles, lazy loading, and depth limits? Read that code specifically — it is the only genuinely new surface in this release.
  • Is there a framework-agnostic core (e.g. koderhut/onelog) consumable as plain PSR-3? Still the deciding question for anything beyond a spike.
  • What does this solve that Laravel's native stack channel plus processors does not? Unanswered by 1.2.0; the release arguably is processors, renamed.

Recommendation: reject for adoption — unchanged, with the rationale narrowed. The prior verdict rested partly on dormancy; that leg is now weaker. The remaining legs are sufficient on their own: framework mismatch, no Laravel service provider, unknown PHP/Symfony constraints, zero dependents, and a core capability duplicated natively. Escalate to a scoped 1–2 day source read only if a stakeholder can articulate a logging requirement Laravel's native stack fails. The 1.2.0 feature is not that requirement.

Integration Approach

Stack fit — none, as packaged, unchanged. Assuming Laravel 10/11 on PHP 8.2+ with Monolog 3.x, there is still no supported install path. 1.2.0 adds capability inside the Symfony-shaped pipeline; it does not add a Laravel entry point.

Migration path — the new feature has a direct native equivalent. Map 1.2.0's middleware onto what Laravel already ships:

1.2.0 concept Laravel/Monolog native
Message pre-processing ProcessorInterface::__invoke() mutating $record['message']
Context pre-processing Processor mutating $record['context']
Object hydration helper A small, owned processor class doing explicit, typed extraction
Pipeline ordering $logger->pushProcessor() order, or per-channel tap array

The correct migration is therefore write a ~40-line processor, not adopt a bundle. That processor is first-party, testable, and free of framework coupling. This is the strongest argument in the whole review: the feature that justified 1.2.0 is cheaper to reimplement than to integrate.

Compatibility — still assume failure, verify cheaply. Composer dry-run against the production PHP/Laravel matrix remains step one. --ignore-platform-reqs remains a stop signal. A newer release tag is not evidence that constraints moved; 2018-era packages frequently ship feature commits on unchanged platform pins.

Sequencing (only if the spike is authorized):

  1. Day 1 — constraint check. composer.json for php/symfony/*; attempt resolution against the production matrix. Fail here and stop.
  2. Day 1 — capability diff, rewritten. Acceptance test: "given a domain object, emit a log record with fields X, Y, Z to sinks A and B." Pass it with native processors first. It will pass. Close the ticket.
  3. Day 2 — core-only evaluation. If a PSR-3 core exists and resolves cleanly, evaluate that behind a service provider you own. Never install the bundle.
  4. Decision gate. Adopt only if the core resolves on current PHP, the capability diff survives step 2, and the maintainer has confirmed a support posture in writing. 1.2.0 alone does not satisfy the third condition.
  5. If adopted — fork, pin to a commit SHA, vendor, and add contract tests asserting delivery to every sink plus safe behavior on cyclic objects. Treat as first-party from day one.

Effort estimate. Adapter-plus-fork remains ~3–5 engineer-days, with 1.2.0 adding perhaps half a day to bridge the middleware chain. A native processor is well under one day, with no ongoing tax. The burden of proof remains with the package, and 1.2.0 did not discharge it.

Operational Impact

Maintenance — downgraded from "inert" to "unknown," not to "low." One release after a seven-year gap changes the diagnosis but not the budget. Until a cadence is demonstrated, plan as if you own the fork: PHP minor upgrades are your patches, Monolog major bumps are your migrations. Record it as a perpetual small line item. The correct update to the previous assessment is a footnote, not a reversal.

Support — marginally improved, still thin. A responsive maintainer is the best realistic outcome for a one-star project. That is a single point of contact with no SLA, no on-call, and no community corpus to fall back on. Ramp-up still means reading source. Do not place this on an audited path without a named internal owner.

Scaling — the fan-out multiplier is unchanged; 1.2.0 adds a per-event compute cost. Object hydration runs on every log event before every sink. Under high-cardinality logging this is measurable CPU, and if any getter touches the database it is I/O on the request path. Mitigations: hydrate explicitly rather than reflectively, cap traversal depth, and sample high-volume routes. Native processors give you the same control with fewer layers.

Failure modes — the list grows by two.

  1. Handler exception propagation — does one failing sink drop the event for all sinks or abort the request? (unchanged)
  2. Unbounded buffering — memory growth under sustained load. (unchanged)
  3. Disk exhaustion — rotation policy absent or misconfigured. (unchanged)
  4. Container resolution failure — Symfony-shaped constructor resolved by Laravel's container fails at boot. (unchanged; loud, therefore acceptable)
  5. Composer drift — --ignore-platform-reqs breaks weeks later. (unchanged)
  6. Object graph blowup (new) — cycles, deep graphs, or lazy-loading getters stall or error inside the logging path, where failures are silent by default.
  7. Context leakage (new) — wholesale object hydration writes PII or secrets into sinks that were never scoped for them. This one has compliance consequences, not just availability ones.

Ramp-up — unchanged, low ceiling. No docs for 1.2.0 beyond a one-line changelog entry; no examples; no Q&A. The naming ("middleware") actively misdirects a Laravel engineer. Half a day to establish what the package does remains the floor.

Verdict. The 1.2.0 release weakens the dormancy argument and does nothing else. Framework mismatch, absent dependents, unknown platform constraints, and duplication of Monolog processors still dominate. Do not adopt. Revisit only if a named owner volunteers to fork and the maintainer confirms a support posture and the native capability diff is documented as insufficient. Logging is infrastructure — prefer the boring, maintained, framework-native path.

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.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels