ابرووا
شروع رایگان
☰ فهرست مستندات · لاگ در SDK لاراول

لاگ‌گیری با SDK لاراول

لاگ‌گیری ساخت‌یافته برای Laravel از طریق کانال Monolog، با ارسال دسته‌ای و تلاش دوباره.

به‌روزرسانی: ۵ آبان ۱۴۰۵

لاگ‌گیری ساخت‌یافته برای Laravel از طریق کانال Monolog، با ارسال دسته‌ای و تلاش دوباره. لاگ‌ها زیر ابرووا تریس › Logs نمایش داده می‌شوند؛ این‌ها از AbrovaTrace::captureMessage() جدا هستند که به پیام‌ها می‌رود.

کانال Monolog

از facade بومی Log در Laravel با یک درایور کانال سفارشی abrovatrace استفاده کنید.

ارسال دسته‌ای

لاگ‌ها بافر می‌شوند و وقتی بافر به batch_size برسد، و هنگام پایان اجرا، فرستاده می‌شوند.

تلاش دوباره با backoff

کلاینت HTTP خطاهای اتصال و پاسخ‌های 5xx را تا ۳ بار، با انتظار ۱، ۲ و سپس ۳ ثانیه، دوباره امتحان می‌کند.

نگاشت سطح‌ها

سطح‌های Monolog خودکار به سطح‌های AbrovaTrace (debug، info، warn، error، fatal) نگاشت می‌شوند.

نصب#

مخزن ابرووا را به composer.json اضافه کنید و بعد نصب کنید (SDK لاراول را ببینید):

json
"repositories": [
    { "type": "composer", "url": "https://center.abrova.ir/api/packages/abrova/composer" }
]
bash
composer require abrova-trace/laravel-sdk

کانال لاگ را به config/logging.php اضافه کنید:

php
'channels' => [
    // ... other channels

    'abrovatrace' => [
        'driver' => 'custom',
        'via' => AbrovaTrace\Laravel\Logging\AbrovaTraceLogChannel::class,
    ],
],

استفاده‌ی پایه#

php
use Illuminate\Support\Facades\Log;

// Send logs to AbrovaTrace
Log::channel('abrovatrace')->info('User signed up', ['userId' => 123]);
Log::channel('abrovatrace')->warning('Rate limit approaching', ['remaining' => 5]);
Log::channel('abrovatrace')->error('Payment failed', [
    'orderId' => 'ORD-456',
    'reason' => 'insufficient_funds',
]);

سطح‌های لاگ#

php
use Illuminate\Support\Facades\Log;

Log::channel('abrovatrace')->debug('Debug information');
Log::channel('abrovatrace')->info('User action completed');
Log::channel('abrovatrace')->notice('Approaching rate limit');   // Maps to 'info'
Log::channel('abrovatrace')->warning('Slow query detected');     // Maps to 'warn'
Log::channel('abrovatrace')->error('Failed to save data');
Log::channel('abrovatrace')->critical('Service unavailable');    // Maps to 'fatal'
Log::channel('abrovatrace')->alert('Database connection lost');  // Maps to 'fatal'
Log::channel('abrovatrace')->emergency('App crashed');           // Maps to 'fatal'
نگاشت سطح‌ها.

سطح‌های Monolog این‌طور به سطح‌های AbrovaTrace نگاشت می‌شوند: DEBUG=debug، INFO/NOTICE=info، WARNING=warn، ERROR=error، CRITICAL/ALERT/EMERGENCY=fatal.

لاگ‌گیری مستقیم با SDK#

می‌توانید مستقیم از طریق facade ابرووا تریس هم لاگ بگیرید:

php
use AbrovaTrace\Laravel\AbrovaTraceFacade as AbrovaTrace;
use AbrovaTrace\Laravel\Logging\LogLevel;

// Basic log
AbrovaTrace::log('Server started', LogLevel::INFO);

// With metadata
AbrovaTrace::log('Order processed', LogLevel::INFO, [
    'orderId' => 'ORD-123',
    'amount' => 99.99,
]);

// User ID: logs carry the id from setUser() (set automatically by the middleware)
AbrovaTrace::setUser(['id' => 'user_abc123']);
AbrovaTrace::log('Payment declined', LogLevel::ERROR, [
    'reason' => 'card_expired',
]);

// Convenience methods
AbrovaTrace::info('User logged in');
AbrovaTrace::warn('API rate limit at 80%');
AbrovaTrace::logError('Failed to send email');
// also: trace(), logDebug(), fatal()

کانال stack#

با اضافه کردن abrovatrace به یک کانال stack، لاگ‌ها را به چند مقصد بفرستید:

php
// config/logging.php
'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily', 'abrovatrace'],
        'ignore_exceptions' => false,
    ],

    'abrovatrace' => [
        'driver' => 'custom',
        'via' => AbrovaTrace\Laravel\Logging\AbrovaTraceLogChannel::class,
    ],
],
php
// Now Log::info() sends to both daily file AND AbrovaTrace
Log::info('User action', ['userId' => 123]);

لاراول exceptionهای گزارش‌شده را در کانال لاگ پیش‌فرض شما می‌نویسد و از نسخه‌ی 0.2.3 به بعد، SDK دیگر جلوی این کار را نمی‌گیرد. اگر abrovatrace در stack پیش‌فرض باشد، هر exception علاوه بر گزارش به‌عنوان خطا، به‌شکل یک ورودی لاگ هم در لاگ‌ها می‌رسد.

metadata و اطلاعات زمینه#

php
// Structured metadata
Log::channel('abrovatrace')->info('Order placed', [
    'orderId' => 'ORD-12345',
    'amount' => 4500000,
    'currency' => 'IRR',
    'items' => 3,
]);

// Automatically included with every log:
// - Platform ('laravel'), environment name and release
// - User id, when a user is set (the middleware sets the authenticated user)

پیکربندی#

php
// config/abrovatrace.php
'logging' => [
    'source_id' => env('ABROVATRACE_LOG_SOURCE_ID', null),     // Groups logs into one source; enables batch sending
    'source_name' => env('ABROVATRACE_LOG_SOURCE_NAME', null), // Display name for the source
    'batch_size' => 50,           // Send when buffer reaches this size
],
گزینهنوعاجباریتوضیح
logging.source_idstringخیرشناسه‌ی منبع لاگ (مثلاً "api-server"). با آن، هر ارسال یک درخواست دسته‌ای است؛ بدون آن، برای هر لاگ یک درخواست
logging.source_namestringخیرنام نمایشی خوانا برای منبع
logging.batch_sizeintegerخیروقتی بافر به این اندازه برسد، ارسال انجام می‌شود (پیش‌فرض: 50)
api_keystringبلهکلید API پروژه (ab_live_xxx)
server_secretstringخیرکلید سرور شما (ab_srv_xxx). وقتی تنظیم پروژه‌ی «مسیرهای سرور به کلید سرور نیاز دارند» روشن باشد لازم است
debugbooleanخیرفعال کردن خروجی دیباگ (پیش‌فرض: false)

بهترین روش‌ها#

از کانال Monolog استفاده کنید

برای یکپارچگی با لاگ‌گیری بومی Laravel از Log::channel('abrovatrace') استفاده کنید

stack برای چند مقصد

برای لاگ هم‌زمان در فایل محلی و فضای ابری، abrovatrace را به یک کانال stack اضافه کنید

metadata ساخت‌یافته

metadata ساخت‌یافته (شناسه‌ها، مدت‌زمان‌ها، شمارش‌ها) اضافه کنید تا فیلتر کردن در داشبورد بهتر شود

لاگ‌ها را به کاربر وصل کنید

لاگ‌ها شناسه‌ی کاربری را که با AbrovaTrace::setUser() تنظیم شده همراه دارند (برای درخواست‌های احرازشده خودکار تنظیم می‌شود)

سطح مناسب را انتخاب کنید

برای کارهای عادی info، برای وضعیت افت‌کرده warn و برای شکست‌ها error

اطلاعات حساس را لاگ نکنید

هرگز رمز عبور، توکن یا اطلاعات شخصی را در metadata لاگ نکنید

این صفحه مفید بود؟
گزارش مشکل