الكتابات/tutorial/2024/06
Tutorial19 يونيو 2024·15 دقيقة

15 أساسيات Laravel 11: التسجيل

تعلم أساسيات التسجيل في Laravel 11. يغطي هذا الدرس التكوين وكتابة رسائل السجل وتخصيص قنوات السجل.

أتقن أساسيات التسجيل في Laravel 11 مع هذا الدليل الشامل. حسّن قدرات المراقبة وتصحيح الأخطاء في تطبيقك.

التكوين

جميع خيارات التكوين التي تتحكم في سلوك التسجيل في تطبيقك موجودة في ملف التكوين config/logging.php. يتيح لك هذا الملف تكوين قنوات سجل تطبيقك. بشكل افتراضي، يستخدم Laravel قناة stack لتجميع قنوات سجل متعددة في قناة واحدة.

// config/logging.php
return [
    'default' => env('LOG_CHANNEL', 'stack'),
    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['single', 'slack'],
        ],
        // تكوينات قنوات أخرى...
    ],
];

محركات القنوات المتاحة

كل قناة سجل مدعومة بـ "محرك". محركات قنوات السجل التالية متاحة في كل تطبيق Laravel:

  • single: مسجل ملف واحد أو قائم على المسار.
  • daily: معالج ملف دوار يتغير يومياً.
  • slack: يرسل رسائل السجل إلى Slack.
  • syslog: يرسل رسائل السجل إلى syslog.
  • errorlog: يرسل رسائل السجل إلى سجل أخطاء النظام.
  • custom: يستخدم مصنعاً محدداً لإنشاء قناة.
// config/logging.php
return [
    'channels' => [
        'single' => [
            'driver' => 'single',
            'path' => storage_path('logs/laravel.log'),
            'level' => 'debug',
        ],
        'slack' => [
            'driver' => 'slack',
            'url' => env('LOG_SLACK_WEBHOOK_URL'),
            'username' => 'Laravel Log',
            'emoji' => ':boom:',
            'level' => 'critical',
        ],
    ],
];

كتابة رسائل السجل

يمكنك كتابة المعلومات في السجلات باستخدام واجهة Log. يوفر Laravel مستويات التسجيل الثمانية المحددة في مواصفات RFC 5424: emergency، alert، critical، error، warning، notice، info، و debug.

use Illuminate\Support\Facades\Log;
 
Log::emergency('رسالة طوارئ');
Log::alert('رسالة تنبيه');
Log::critical('رسالة حرجة');
Log::error('رسالة خطأ');
Log::warning('رسالة تحذير');
Log::notice('رسالة ملاحظة');
Log::info('رسالة معلومات');
Log::debug('رسالة تصحيح');

المعلومات السياقية

يمكن تمرير مصفوفة من البيانات السياقية إلى طرق السجل. سيتم تنسيق هذه البيانات السياقية وعرضها مع رسالة السجل.

use Illuminate\Support\Facades\Log;
 
Log::info('فشل المستخدم {id} في تسجيل الدخول.', ['id' => $user->id]);

يمكنك أيضاً مشاركة المعلومات السياقية عبر جميع قنوات التسجيل باستخدام طريقة Log::shareContext.

use Illuminate\Support\Facades\Log;
 
Log::shareContext(['request_id' => $requestId]);

تخصيص قنوات السجل

يمكنك تخصيص Monolog للقنوات عن طريق تعريف مصفوفة tap في تكوين القناة. يجب أن تحتوي هذه المصفوفة على قائمة بالفئات التي يمكنها تعديل مثيل Monolog.

// config/logging.php
return [
    'channels' => [
        'single' => [
            'driver' => 'single',
            'tap' => [App\Logging\CustomizeFormatter::class],
            'path' => storage_path('logs/laravel.log'),
            'level' => 'debug',
        ],
    ],
];

عرّف الفئة التي ستخصص مثيل Monolog الخاص بك:

namespace App\Logging;
 
use Monolog\Formatter\LineFormatter;
use Monolog\Logger;
 
class CustomizeFormatter
{
    public function __invoke(Logger $logger)
    {
        foreach ($logger->getHandlers() as $handler) {
            $handler->setFormatter(new LineFormatter(
                '[%datetime%] %channel%.%level_name%: %message% %context% %extra%'
            ));
        }
    }
}

الخاتمة

فهم نظام التسجيل في Laravel ضروري لمراقبة وتصحيح أخطاء تطبيقك. من خلال تكوين وتخصيص قنوات السجل، يمكنك ضمان تسجيل المعلومات الحرجة وسهولة الوصول إليها.

لمزيد من المعلومات التفصيلية، راجع توثيق التسجيل الرسمي في Laravel 11.