phattarachai/laravel-exception-log
Composer 安装命令:
composer require phattarachai/laravel-exception-log
包简介
Log exceptions to database with smart email alerts and mute capability
README 文档
README
บันทึก Exception ลงฐานข้อมูล พร้อมระบบแจ้งเตือนผ่านอีเมล
ความสามารถ
- บันทึก Exception — ดักจับทุก Exception ที่เกิดขึ้นในแอป Laravel แล้วบันทึกลง database โดยไม่ต้องแก้โค้ดใดๆ
- ระบบ Fingerprint Exception — Exception เดียวกัน (class + file + line เดียวกัน) จะไม่สร้าง record ซ้ำ แต่จะนับจำนวน Exception ที่เกิดขึ้น
- Request Context — บันทึกบริบทการเกิด exception อัตโนมัติ (HTTP: URL, method, IP, user / Console: command / Queue: job command) พร้อม sanitize ข้อมูลสำคัญ (password, token, secret, api_key, credit_card, cvv)
- แจ้งเตือนผ่านอีเมล — ส่งอีเมลแจ้งเตือนเมื่อเกิด exception ใหม่, เมื่อจำนวนถึง milestone (10, 100, 200, 300, ..., 1000, 2000, ...), เมื่อ exception ที่ resolved กลับมาเกิดใหม่ (REOPENED), หรือเมื่อเงียบไปนานแล้วกลับมาเกิดอีก ( re-alert)
- Resolved/Unresolved — ทำเครื่องหมาย exception ว่าแก้ไขแล้ว (resolved) ได้ ถ้าเกิดซ้ำจะ reopen อัตโนมัติพร้อมแจ้งเตือน
- Ignore List — กำหนด exception class ที่ไม่ต้องการบันทึกได้ (เช่น ValidationException, NotFoundHttpException) รองรับ subclass ด้วย
- Mute ได้ — ปิดการแจ้งเตือน exception ที่ไม่ต้องการติดตามได้
- หน้า Admin UI — ดูรายการ exception ทั้งหมด, filter ตาม status/class/message/วันที่, ดูรายละเอียด stack trace และ context, resolve/reopen, toggle mute, ลบ record ได้
- Pruning — ลบ exception เก่าอัตโนมัติตามจำนวนวันที่กำหนด (default 90 วัน)
Requirements
- PHP 8.2+
- Laravel 11 หรือ 12
Installation
composer require phattarachai/laravel-exception-log
Publish และ run migration:
php artisan vendor:publish --provider="Phattarachai\ExceptionLog\ExceptionLogServiceProvider" --tag="exception-log-migrations" php artisan migrate
Publish config (optional):
php artisan vendor:publish --provider="Phattarachai\ExceptionLog\ExceptionLogServiceProvider" --tag="exception-log-config"
Configuration
เพิ่มใน .env:
EXCEPTION_LOG_ENABLED=true EXCEPTION_LOG_NOTIFY_EMAIL=your@email.com EXCEPTION_LOG_RETENTION_DAYS=90 EXCEPTION_LOG_RE_ALERT_AFTER_HOURS=24
Config Options
| Key | Default | Description |
|---|---|---|
enabled |
true |
เปิด/ปิดการบันทึก exception |
notify_email |
null |
อีเมลที่จะรับการแจ้งเตือน (null = ไม่ส่ง) |
retention_days |
90 |
จำนวนวันที่เก็บ exception ก่อน prune |
route_prefix |
exception-logs |
URL prefix ของหน้า admin |
route_middleware |
['web', 'auth'] |
Middleware สำหรับหน้า admin |
ignore |
[ValidationException, ...] |
Exception classes ที่ไม่ต้องการบันทึก |
re_alert_after_hours |
24 |
ชั่วโมงที่เงียบไปก่อนจะแจ้งเตือนอีกครั้ง |
Ignore List
กำหนด exception ที่ไม่ต้องการบันทึกใน config:
'ignore' => [ \Illuminate\Validation\ValidationException::class, \Illuminate\Auth\AuthenticationException::class, \Symfony\Component\HttpKernel\Exception\NotFoundHttpException::class, \Illuminate\Database\Eloquent\ModelNotFoundException::class, ],
ใช้ instanceof ในการเช็ค ดังนั้น subclass จะถูก ignore ด้วย
การใช้งาน
Package จะดักจับ exception ทั้งหมดให้อัตโนมัติ ไม่ต้องแก้โค้ดใดๆ เพียงติดตั้งและ migrate เท่านั้น
Email Notifications
ส่งอีเมลแจ้งเตือนเมื่อ:
- เกิด exception ใหม่ครั้งแรก
- จำนวนครั้งถึง milestone (10, 100, 200, 300, ..., 1000, 2000, ...)
- exception ที่ resolved แล้วกลับมาเกิดอีก (subject ขึ้นต้นด้วย "REOPENED:")
- exception ที่ เงียบไปนาน เกินค่า
re_alert_after_hoursแล้วกลับมาเกิดอีก
Request Context
ทุก exception จะบันทึกบริบทการเกิดอัตโนมัติ:
- HTTP — URL, method, route name, IP, user agent, user ID, sanitized input
- Console — artisan command ที่รัน
- Queue — queue worker command
ข้อมูลสำคัญ (password, token, secret, api_key, credit_card, cvv) จะถูก sanitize เป็น [REDACTED] อัตโนมัติ
Resolved/Unresolved
- กด Resolve เพื่อทำเครื่องหมายว่าแก้ไขแล้ว
- ถ้า exception เดิมเกิดขึ้นอีก จะ reopen อัตโนมัติ พร้อมส่งอีเมลแจ้งเตือน
- Filter ดู exception ตาม status ได้ (Unresolved, Resolved, Muted)
Admin UI
เข้าดูได้ที่ /exception-logs (ต้อง login ก่อน)
กำหนดสิทธิ์ผ่าน Gate:
Gate::define('viewExceptionLogs', fn ($user) => $user->isAdmin());
Pruning
php artisan exception-log:prune
หรือใช้ model pruning ของ Laravel:
php artisan model:prune --model="Phattarachai\ExceptionLog\Models\ExceptionLog"
Publish Views
php artisan vendor:publish --provider="Phattarachai\ExceptionLog\ExceptionLogServiceProvider" --tag="exception-log-views"
License
MIT
phattarachai/laravel-exception-log 适用场景与选型建议
phattarachai/laravel-exception-log 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5 次下载、GitHub Stars 达 1, 最近一次更新时间为 2026 年 03 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「logging」 「exception」 「laravel」 「error-tracking」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 phattarachai/laravel-exception-log 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 phattarachai/laravel-exception-log 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 phattarachai/laravel-exception-log 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A Zend Framework module that sets up Monolog for logging in applications.
Asynchronous Sentry for Symfony - Fire and forget
Stackdriver handler for Monolog (codeinternetapplications/monolog-stackdriver Fork).
High-performance, zero-dependency PSR-3 logger for MonkeysLegion with structured logging, handlers, processors, and PHP 8.4 features.
Error and Exception override and observers.
Error handler based on Booboo with HTML and JSON support
统计信息
- 总下载量: 5
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 31
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-14