jeffersongoncalves/laravel-settings-discord-logger
A Laravel package that adds a Discord logging channel configured through Laravel Settings, making it easy to send application logs to Discord webhooks with minimal setup and runtime-configurable options.
jeffersongoncalves/laravel-discord-logger channel with spatie/laravel-settings, so the team buys a thin adapter rather than owning a bespoke settings/overrides system..env edit. That directly supports decisions like "can we let on-call engineers retune alerts during an incident?" or "do we need an admin UI for notifications?"error to one channel and info elsewhere. Useful when scoping a roadmap item around tenant-specific or team-specific alert routing.LOG_DISCORD_WEBHOOK_URL" is a decision-enabler for secrets handling — PMs can defend "no secrets in version control, no secrets in plaintext DB columns" without commissioning custom work..env-based installs keep working untouched. That underpins a "ship without a coordinated rollout plan" decision — low blast radius, no forced migration comms.discord-logger:test using the stored webhook means the admin-UI acceptance criterion "verify my saved webhook works" can be met out of the box rather than built into our own settings screen.Good fit when:
jeffersongoncalves/laravel-discord-logger and spatie/laravel-settings — this is an adapter between two dependencies you've already accepted, not a new ecosystem..env-driven config — greenfield or existing installs both upgrade without ceremony.Look elsewhere or defer when:
.env-only is genuinely sufficient. This package adds a settings table, a migration, and a third dependency to solve a problem you don't have.spatie/laravel-settings and have no appetite for adopting it — the value proposition is inseparable from that dependency.spatie/laravel-settings plus the underlying logger is a supply-chain surface to review deliberately.To executives (30 seconds): This is a small, low-risk package that lets us change how we send operational alerts to Discord from a settings screen instead of shipping code. It encrypts webhook credentials, works with our existing configuration without a migration project, and sits on top of two libraries we'd likely use anyway. The cost is one new dependency and a settings table; the benefit is that alert tuning stops being an engineering ticket. It's a tinkerer-scale commitment, not a platform bet — and because it's v1.0.0 from a single maintainer, I'd position it as "adopt behind our logging abstraction, don't hard-code to it."
To engineering leads: The value is concentrated in two places: the SettingsLogger channel factory that merges stored values over config on first use of the discord channel, and the seeded migration that preserves existing .env setups. Both are exactly the fiddly bits we'd otherwise write and maintain ourselves. Watch the coupling — we're taking spatie/laravel-settings and the underlying Discord logger as hard dependencies, and the runtime floor is PHP 8.2 / Laravel 12.61+/13. Recommend we (a) verify our framework version, (b) confirm the automatic channel registration and the "upgrade a plain Logger channel" behaviour doesn't collide with any custom channel definitions we already have, and (c) wrap usage so swapping implementations later is a config change rather than a refactor.
To security/compliance: Webhook URLs and per-level webhooks are stored encrypted, and an empty stored value falls back to the env var rather than blanking it — so secrets never need to live in the database in plaintext and existing .env practice remains valid. The settings migration seeds from current config; no credentials are introduced by installing it. Please scope review to the two transitive dependencies and confirm our encryption key management covers the new settings table.
Recommendation: Approve a time-boxed spike, not a broad rollout. Wire it behind the existing logging abstraction, exercise discord-logger:test against a stored webhook, and revisit once we have a release or two of maintenance signal.
How can I help you explore Laravel packages today?