مقدمة: لماذا نحتاج إلى تسجيل السجلات في PHP؟
تسجيل السجلات ليس مجرد تسجيل الأخطاء في ملف. إنها أداتك الرئيسية للمراقبة وتصحيح الأخطاء وتحليل أداء تطبيق الويب. بدون تسجيل سجلات عالي الجودة، ستظل تتخيل لماذا تعطل الموقع أو لماذا لا يستطيع المستخدم إتمام الطلب. بالنسبة لمطوري PHP المبتدئين، فإن إعداد تسجيل السجلات الصحيح هو الخطوة الأولى نحو التطوير الاحترافي.
تخيل أن تطبيقك هو صندوق أسود. السجلات هي الطريقة الوحيدة للنظر إلى الداخل، وفهم ما يحدث في كل لحظة زمنية. في هذه المقالة، سنستعرض أفضل الممارسات التي ستساعدك على تجنب الأخطاء النموذجية للمبتدئين وبناء نظام مراقبة موثوق.
1. الأساسيات: دوال PHP المدمجة لتسجيل السجلات
توفر PHP عدة دوال مدمجة للعمل مع السجلات. أبسطها وأكثرها شيوعًا هي error_log(). تتيح لك إرسال رسالة إلى سجل النظام للخادم أو إلى ملف محدد.
مثال أساسي لاستخدام error_log()
// أبسط تسجيل خطأ في سجل النظامerror_log("هذه رسالة خطأ", 0);
// التسجيل في ملف محددerror_log("خطأ في الاتصال بقاعدة البيانات", 3, "/var/log/php_errors.log");
// التسجيل مع تحديد نوع الرسالةerror_log("تحذير: استعلام بطيء", 4);ومع ذلك، فإن استخدام error_log() مباشرة في بيئة الإنتاج ليس فكرة جيدة. أولاً، ستخلط بين أنواع مختلفة من الرسائل. ثانيًا، من الصعب إدارة تنسيق السجلات وتدويرها. للمشاريع الجادة، من الأفضل استخدام مكتبات متخصصة.
إعداد php.ini لتحسين تسجيل السجلات
قبل كتابة الكود، تأكد من أن ملف php.ini لديك مضبوط بشكل صحيح:
; تفعيل تسجيل الأخطاءlog_errors = On; مسار ملف السجلerror_log = /var/log/php_errors.log; الحد الأقصى لحجم السجل (بالبايت)log_errors_max_len = 1024; إيقاف عرض الأخطاء على الشاشة (لبيئة الإنتاج)display_errors = Off; تفعيل تسجيل جميع مستويات الأخطاءerror_reporting = E_ALL2. مستويات التسجيل: من DEBUG إلى CRITICAL
أحد الأخطاء الرئيسية للمبتدئين هو تسجيل جميع الرسائل في كومة واحدة. يستخدم التسجيل الاحترافي مستويات الخطورة. يساعد ذلك في تصفية السجلات بسرعة وعدم تفويت الأخطاء الحرجة بين الرسائل المعلوماتية.
المستويات القياسية PSR-3
اعتمد مجتمع PHP معيار PSR-3، الذي يحدد 8 مستويات للتسجيل:
- DEBUG — معلومات تصحيح مفصلة (تُستخدم فقط في التطوير)
- INFO — رسائل إعلامية (مستخدم سجل، تم إنشاء طلب)
- NOTICE — أحداث عادية ولكنها هامة (استخدام دوال قديمة)
- WARNING — تحذيرات (مثل استعلام بطيء، مساحة تخزين منخفضة)
- ERROR — أخطاء تتطلب انتباهًا (فشل الاتصال بقاعدة البيانات)
- CRITICAL — أخطاء حرجة (مكون رئيسي في النظام غير متاح)
- ALERT — يتطلب تدخلًا فوريًا (اختراق، تعطل النظام)
- EMERGENCY — النظام غير قابل للتشغيل
مثال لتطبيق المستويات مع Monolog
أفضل مكتبة لتسجيل السجلات في PHP هي Monolog. وهي متوافقة تمامًا مع PSR-3 ويسهل إعدادها:
use Monolog\\Logger;use Monolog\\Handler\\StreamHandler;use Monolog\\Handler\\RotatingFileHandler;use Monolog\\Level;
// إنشاء مسجل باسم القناة$log = new Logger('app');
// إضافة معالج لجميع المستويات$log->pushHandler(new StreamHandler('/var/log/app.log', Level::Debug));
// ملف منفصل للأخطاء الحرجة$log->pushHandler( new RotatingFileHandler('/var/log/critical.log', 30, Level::Critical));
// اس