تسجيل الأخطاء لـ PHP: أفضل الحلول والأدوات
تسجيل الأخطاء هي إحدى المهام الأساسية عند تطوير أي تطبيق ويب بلغة PHP. بدون تسجيل أخطاء عالي الجودة، لا يمكن تصحيح الكود بشكل فعال، أو تتبع الأخطاء في بيئة الإنتاج، أو تحليل سلوك المستخدمين. في هذه المقالة، سنستعرض أفضل المكتبات والأدوات لتسجيل الأخطاء في PHP، وميزاتها وأمثلة على استخدامها.
لماذا من المهم تسجيل الأخطاء بشكل صحيح؟
استدعاء بسيط لـ error_log() أو الكتابة إلى ملف عبر file_put_contents() لم يعد كافياً عندما يكبر المشروع. الحلول الحديثة تقدم:
- دعم PSR-3 (معيار واجهة تسجيل الأخطاء)؛
- معالجات مرنة (ملفات، قواعد بيانات، syslog، بريد إلكتروني، Slack)؛
- تنسيق الرسائل (JSON، نص عادي، HTML)؛
- مستويات تسجيل الأخطاء (debug، info، notice، warning، error، critical، alert، emergency)؛
- إمكانية تصفية وتدوير السجلات.
1. Monolog — المعيار الفعلي
Monolog هي المكتبة الأكثر شيوعاً لتسجيل الأخطاء في PHP (أكثر من 300 مليون تحميل على Packagist). وهي متوافقة تماماً مع PSR-3 وتدعم العشرات من المعالجات (handlers) والمنسقات (formatters).
التثبيت
composer require monolog/monologمثال على الاستخدام
<?phprequire 'vendor/autoload.php';
use Monolog\\Logger;use Monolog\\Handler\\StreamHandler;use Monolog\\Handler\\FirePHPHandler;
// إنشاء مسجل$log = new Logger('my_app');$log->pushHandler(new StreamHandler(__DIR__.'/app.log', Logger::WARNING));$log->pushHandler(new FirePHPHandler());
// تسجيل الرسائل$log->warning('تنبيه: تم تجاوز حد الطلبات');$log->error('خطأ في الاتصال بقاعدة البيانات', ['db' => 'mysql', 'time' => 1.5]);?>الإمكانيات الرئيسية
- المعالجات: StreamHandler، RotatingFileHandler، SyslogHandler، SwiftMailerHandler، SlackHandler وغيرها.
- المنسقات: LineFormatter، JsonFormatter، HtmlFormatter، LogstashFormatter.
- المعالجات الأولية: إضافة سياق (IP، URI، جلسة) لكل رسالة.
- دعم مجموعات المسجلين والقنوات.
Monolog مثالية للمشاريع الكبيرة، والأطر (Symfony، Laravel تستخدمها افتراضياً) والهندسة المعمارية للخدمات المصغرة.
2. KLogger — بديل خفيف
KLogger هي مكتبة بسيطة لكنها فعالة لمن لا يحتاجون إلى مئات المعالجات. وهي تنفذ PSR-3 وتعمل "مباشرة من الصندوق".
التثبيت
composer require katzgrau/kloggerمثال على الاستخدام
<?phprequire 'vendor/autoload.php';
use Katzgrau\\KLogger\\Logger;
$log = new Logger(__DIR__.'/logs');$log->info('تم تسجيل المستخدم', ['user_id' => 42]);$log->debug('تصحيح: طلب إلى API', ['url' => '/api/v1/data']);?>الميزات
- تدوير تلقائي للسجلات حسب التاريخ؛
- الحد الأدنى من التبعيات؛
- دعم مستويات تسجيل الأخطاء؛
- API بسيط (عدد قليل من الطرق فقط).
KLogger مناسبة للمشاريع الصغيرة، والنصوص البرمجية، والتطبيقات حيث البساطة مهمة.
3. Analog — مرن وبسيط
Analog هي مكتبة تسمح بتغيير طريقة تسجيل الأخطاء بسهولة دون تغيير الكود. تستخدم مفهوم "الآلة" (machine) التي تحدد أين وكيف يتم كتابة السجلات.
التثبيت
composer require analog/analogمثال على الاستخدام
<?phprequire 'vendor/autoload.php';
use Analog\\Analog;use Analog\\Handler\\File;
// إعداد الكتابة إلى ملفAnalog::handler(File::init(__DIR__.'/app.log'));
// تسجيلAnalog::warning('مطلوب تحديث