تسجيل السجلات لـ PHP (Monolog)

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

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

ابدأ الدورة
```html

ما هو التسجيل (Logging) في PHP ولماذا هو مطلوب؟

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

لماذا نقوم بالتسجيل؟

  • تصحيح أخطاء الإنتاج (تتبع الأخطاء stack trace)
  • مراقبة الأداء
  • تدقيق الأمان (عمليات تسجيل الدخول، تغييرات البيانات)
  • تحليل سلوك المستخدمين

تثبيت Monolog

يتم التثبيت عبر Composer (المكافئ لـ pip في PHP):

composer require monolog/monolog

يتطلب التشغيل PHP 8.0+ و Composer 2.x.

الوظائف والإمكانيات الأساسية

يدعم Monolog:

  • القنوات (Channels) — مسجلات معزولة لأجزاء مختلفة من التطبيق (مثل 'security', 'database')
  • مستويات التسجيل (DEBUG, INFO, WARNING, ERROR, CRITICAL وغيرها)
  • المعالجات (Handlers) — أين يتم الكتابة: ملفات، قواعد بيانات، Slack, Telegram, البريد الإلكتروني
  • المعالجات الإضافية (Processors) — إثراء الرسائل بالسياق (IP, الوقت, الجلسة)

مثال على الكود

<?phprequire 'vendor/autoload.php';

use Monolog\\Logger;use Monolog\\Handler\\StreamHandler;use Monolog\\Handler\\TelegramBotHandler;use Monolog\\Processor\\WebProcessor;

// إنشاء قناة 'app'$log = new Logger('app');

// معالج للكتابة في ملف$log->pushHandler(new StreamHandler(__DIR__.'/logs/app.log', Logger::WARNING));

// معالج لـ Telegram (اختياري)$telegram = new TelegramBotHandler('YOUR_BOT_TOKEN', 'CHAT_ID', Logger::CRITICAL);$log->pushHandler($telegram);

// معالج إضافي لإضافة IP و User-Agent$log->pushProcessor(new WebProcessor());

// تسجيل$log->info('المستخدم قام بتسجيل الدخول', ['user_id' => 123]);$log->error('خطأ في قاعدة البيانات', ['sql' => 'SELECT * FROM users']);

متى يتم الاستخدام

Monolog إلزامي في الحالات التالية:

  • أي مشروع تجاري أو مفتوح المصدر على PHP (Symfony, Laravel يستخدمان Monolog افتراضيًا)
  • الخدمات المصغرة (Microservices) و APIs — لتتبع الطلبات
  • النصوص المجدولة (Cron scripts) والعمال (Workers) — لتتبع تنفيذ المهام
  • عند التكامل مع الخدمات الخارجية (سجلات في Graylog, Sentry, Papertrail)

تم اختبار المكتبة في آلاف المشاريع وتدعم أي وسيلة نقل تقريبًا للسجلات. إذا كنت تكتب بلغة PHP — ابدأ مع Monolog.

```

توصيات