jordanpartridge/laravel-say-logger
A Laravel logging channel that speaks your log messages out loud using the macOS say command, so errors and warnings reach you even when you're away from the terminal. Handy for local development and debugging.
Verdict: approve as an optional developer-local novelty tool; block from any shared, staging, or production logging configuration.
Architecture fit
'say') that shells out to the macOS say binary and lets you compose it into a Laravel logging stack (['single', 'say']). This is the standard Laravel extension point, so there is no framework-fighting.Integration feasibility
composer require, one line in config/logging.php. No migrations, no service provider work, no schema.Technical risk
say exists only on macOS. On Linux, Windows, or Alpine-based containers the channel will either throw or silently no-op. If it throws inside a stack channel, the failure surfaces in the logging path — the worst possible place for a non-essential dependency.stack risks the primary channel's delivery if the say handler raises or blocks. The package documents non-blocking async synthesis, but fire-and-forget process spawning from PHP has no backpressure, no confirmation of delivery, and no failure signal.say invocation per log record with no documented debounce or rate limit means a noisy dev session spawns hundreds of concurrent audio processes — CPU/audio-device contention, orphaned or zombie say processes, and PHP-FPM workers held open depending on the spawn implementation.escapeshellarg) rather than concatenated into a shell string — log messages are attacker-influenced in many apps.Key questions
say is missing — exception, silent drop, or no-op? Does a failure in the say channel affect delivery on sibling channels in the same stack?APP_ENV or provide a documented enable/disable switch suitable for policy enforcement?Stack fit
local environment of macOS-based developers who opt in individually. Not suitable for CI, containers, staging, or production.Migration path
config/logging.php unchanged in the repository and let interested developers add the say channel through an untracked local override or an env-gated conditional so the shared config stays portable across Linux and macOS teammates:
LOG_SAY_ENABLED) defaulting to false.'say' to a stack defined in committed config..gitignore/review checklist item and, ideally, a CI lint that fails if 'say' appears in tracked logging config.Compatibility
Sequencing
say failure cannot break sibling channels in a stack. This is the gating check.Maintenance
Support
Scaling
Failure modes
say binary / non-macOS host: potential exception in the logging path; highest-severity concern because it can drop logs that matter. Verify and mitigate via env gating.Ramp-up
Recommendation: Accept as an optional, per-developer, macOS-local convenience with a committed-config guardrail. Gate approval on confirming that a say failure cannot disrupt sibling log channels. If that cannot be confirmed, reject — the downside of silent log loss in a stack channel far outweighs the novelty value.
How can I help you explore Laravel packages today?