تسجيل الأخطاء في تطبيقات PHP: أفضل الممارسات للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تسجيل الأخطاء في تطبيقات PHP: أفضل الممارسات للمبتدئين

\n\n

تسجيل الأخطاء هو عملية تسجيل معلومات حول تشغيل التطبيق في ملفات خاصة (سجلات). بالنسبة لمطوري PHP المبتدئين، فإن القدرة على تكوين تسجيل الأخطاء بشكل صحيح لا تقل أهمية عن معرفة بناء الجملة للغة. تساعد السجلات في:

\n
    \n
  • اكتشاف الأخطاء غير المرئية على الشاشة (مثل بيئة الإنتاج).
  • \n
  • تتبع سلوك المستخدمين وأداء النظام.
  • \n
  • إجراء تدقيق أمني.
  • \n
  • تسريع تصحيح الأخطاء المعقدة.
  • \n
\n

في هذه المقالة، سنستعرض أفضل ممارسات تسجيل الأخطاء في PHP: من الدالة المدمجة error_log() إلى استخدام المكتبات الاحترافية مثل Monolog. ستتعلم كيف لا تثقل الكود، وتختار مستويات التسجيل بشكل صحيح، وتتجنب الأخطاء الشائعة للمبتدئين.

\n\n

1. الأساسيات: التسجيل المدمج في PHP

\n

أبسط طريقة لتسجيل شيء ما في السجل هي استخدام الدالة error_log(). يمكنها إرسال الرسائل إلى سجل النظام، أو إلى ملف محدد، أو إلى البريد الإلكتروني.

\n\n

مثال على التسجيل الأساسي

\n
<?php\n// تسجيل في سجل النظام (syslog)\nerror_log('هذه رسالة خطأ');\n\n// تسجيل في ملف محدد\nerror_log('خطأ في الاتصال بقاعدة البيانات', 3, '/var/log/my_app_errors.log');\n?>
\n\n

الإيجابيات: لا يتطلب تثبيت مكتبات، يعمل "فوراً".

\n

السلبيات:

\n
    \n
  • لا مرونة (لا يمكن تغيير تنسيق الإخراج بسهولة).
  • \n
  • صعوبة التصفية حسب مستوى الأهمية.
  • \n
  • غير مريح عند العمل مع قنوات متعددة (ملف، قاعدة بيانات، Slack).
  • \n
\n

بالنسبة للنصوص البرمجية البسيطة والتعلم، هذا يكفي، ولكن للمشاريع الجادة، يجب استخدام حلول أكثر تقدماً.

\n\n

2. مستويات التسجيل: متى وماذا تكتب

\n

لكي تكون السجلات مفيدة وليست "ضوضاء"، من المهم تصنيف الرسائل حسب مستوى الخطورة. معيار PSR-3 (الذي سنشرحه أدناه) يقترح 8 مستويات:

\n
    \n
  • DEBUG — معلومات تصحيح الأخطاء (قيم المتغيرات، وقت التنفيذ). يُستخدم فقط في مرحلة التطوير.
  • \n
  • INFO — رسائل إعلامية (تم تسجيل المستخدم، تمت معالجة الطلب).
  • \n
  • NOTICE — أحداث عادية ولكنها مهمة (استخدام API قديم).
  • \n
  • WARNING — تحذيرات (حدث خطأ ما لكن التطبيق يستمر في العمل، مثل تنسيق إدخال غير صحيح).
  • \n
  • ERROR — أخطاء تتطلب تدخلاً (فشل حفظ ملف).
  • \n
  • CRITICAL — أخطاء حرجة (مكون رئيسي في النظام غير متاح).
  • \n
  • ALERT — يتطلب إجراءً فورياً (اختراق، تعطل قاعدة البيانات).
  • \n
  • EMERGENCY — النظام غير قابل للتشغيل.
  • \n
\n\n

مثال على استخدام المستويات (بدون مكتبات)

\n
<?php\nfunction logMessage($level, $message) {\n    $logFile = __DIR__ . '/app.log';\n    $timestamp = date('Y-m-d H:i:s');\n    $formatted = "[{$timestamp}] [{$level}] {$message}" . PHP_EOL;\n    file_put_contents($logFile, $formatted, FILE_APPEND);\n}\n\nlogMessage('INFO', 'دخل المستخدم إلى النظام');\nlogMessage('ERROR', 'فشل الاتصال بقاعدة البيانات');\n?>
\n\n

نصيحة: لا تكتب أبداً كلمات المرور أو الرموز المميزة أو استعلامات SQL الكاملة مع بيانات المستخدمين في السجل — فهذا يشكل تهديداً أمنياً.

\n\n

3. PSR-3 و Monolog: النهج الاحترافي

\n

PSR-3 هو توصية من PHP-FIG تصف واجهة موحدة لمكتبات تسجيل الأخطاء. أشهر تطبيق لـ PSR-3 هو Monolog. يُستخدم في Laravel و Symfony والعديد من الأطر الأخرى.

\n\n

تثبيت Monolog عبر Composer

\n
composer require monolog/monolog
\n\n

مثال بسيط مع Monolog

\n
<?php\nrequire 'v                

المدونات

توصيات الكتب