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

لاگ‌گیری در SDK فلاتر

لاگ‌گیری کم‌مصرف برای اپ‌های Flutter با ارسال دسته‌ای خودکار، تلاش دوباره با فاصله‌ی افزایشی و توجه به چرخه‌ی حیات موبایل.

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

لاگ‌گیری کم‌مصرف برای اپ‌های Flutter با ارسال دسته‌ای خودکار، تلاش دوباره با فاصله‌ی افزایشی (exponential backoff) و توجه به چرخه‌ی حیات موبایل. لاگ‌ها در بافر نگه داشته و به‌صورت دسته‌ای ارسال می‌شوند تا مصرف شبکه کم بماند.

لاگ‌ها در برابر پیام‌ها.

لاگ‌ها (AbrovaTrace.info()، warn()، logError()، ...) در بافر نگه داشته، دسته‌ای ارسال و در ابرووا تریس › Logs نمایش داده می‌شوند. این‌ها از AbrovaTrace.captureMessage() جدا هستند؛ آن متد یک رویداد را همان لحظه به ابرووا تریس › پیام‌ها می‌فرستد. هیچ‌کدام مشکل (issue) نمی‌سازند؛ برای این کار از captureException() استفاده کنید.

ارسال دسته‌ای خودکار

لاگ‌ها در بافر نگه داشته و دسته‌ای ارسال می‌شوند (پیش‌فرض: ۵۰)

فاصله‌ی افزایشی

دسته‌های ناموفق با تأخیر فزاینده دوباره ارسال می‌شوند (۲ ثانیه، ۴ ثانیه، ۸ ثانیه... تا ۶۰ ثانیه، حداکثر ۱۰ بار)

Hookهای چرخه‌ی حیات

هنگام رفتن اپ به پس‌زمینه خودکار ارسال می‌کند و در حالت غیرفعال متوقف می‌شود

سقف اندازه‌ی بافر

وقتی بافر از ۱٬۰۰۰ بیشتر شود، قدیمی‌ترین لاگ‌ها حذف می‌شوند تا مشکل حافظه پیش نیاید

تایمر تنبل

تایمر فقط وقتی بافر لاگ دارد اجرا می‌شود؛ در حالت بیکار باتری مصرف نمی‌شود

اطلاعات کاربر

شناسه‌ی کاربری که با AbrovaTrace.setUserId() تنظیم شده خودکار ضمیمه می‌شود

فعال‌سازی لاگ‌گیری#

پس از مقداردهی اولیه‌ی AbrovaTrace، سرویس لاگ‌گیری را فعال کنید:

dart
import 'package:abrova_trace_flutter_sdk/abrova_trace_flutter_sdk.dart';

// Initialize AbrovaTrace first
await AbrovaTrace.init(AbrovaTraceConfig(
  apiKey: 'ab_live_your_api_key',
  environment: 'production',
  release: '1.0.0',
));

// Enable logging with a source identifier
AbrovaTrace.enableLogging(
  sourceId: 'my-flutter-app',
  sourceName: 'My Flutter App',
  batchSize: 50,
  flushInterval: Duration(seconds: 5),
);

اگر یکی از متدهای لاگ را پیش از enableLogging() صدا بزنید، لاگ‌گیری خودکار با مقادیر پیش‌فرض و بدون sourceId فعال می‌شود. لاگ‌گیری به Flutter binding نیاز دارد، پس آن را پس از WidgetsFlutterBinding.ensureInitialized() فعال کنید (یا اولین لاگ را بعد از آن بفرستید).

ارسال لاگ‌ها#

متدهای کمکی

dart
// Info log
AbrovaTrace.info('User login successful', metadata: {
  'user_id': 'user_123',
});

// Warning log
AbrovaTrace.warn('Slow API response', metadata: {
  'endpoint': '/api/users',
  'duration_ms': 2500,
});

// Error log
AbrovaTrace.logError('Database query failed', metadata: {
  'query': 'SELECT * FROM users',
  'error': 'Connection timeout',
});

// Debug log
AbrovaTrace.debug('Cache hit for key: user_123');

// Trace log
AbrovaTrace.trace('Entering function processPayment()');

// Fatal log
AbrovaTrace.fatal('App crashed unexpectedly', metadata: {
  'last_screen': 'checkout',
});

متد عمومی لاگ

dart
import 'package:abrova_trace_flutter_sdk/abrova_trace_flutter_sdk.dart';

// Generic log with explicit level
AbrovaTrace.log(
  'Custom event',
  level: LogLevel.info,
  metadata: {'key': 'value'},
);

سطح‌های لاگ#

  • trace — AbrovaTrace.trace() — دیباگ بسیار جزئی در سطح trace
  • debug — AbrovaTrace.debug() — اطلاعات دیباگ هنگام توسعه
  • info — AbrovaTrace.info() — اطلاعات عمومی اپلیکیشن
  • warn — AbrovaTrace.warn() — هشدار درباره‌ی مشکلات احتمالی
  • error — AbrovaTrace.logError() — خطاهایی که باید بررسی شوند
  • fatal — AbrovaTrace.fatal() — خطاهای بحرانی و غیرقابل بازیابی

رفتار در چرخه‌ی حیات موبایل#

سرویس لاگ‌گیری رویدادهای چرخه‌ی حیات اپ را خودکار مدیریت می‌کند:

  • توقف اپ / رفتن به پس‌زمینه — همه‌ی لاگ‌های بافر را فوراً ارسال می‌کند
  • بازگشت اپ — شمارنده‌ی تلاش دوباره را صفر می‌کند و کار عادی ادامه پیدا می‌کند
  • جدا شدن اپ (detached) — لاگ‌ها را ارسال می‌کند و ارسال را متوقف می‌کند
  • پر شدن بافر — وقتی از سقف بافر (۱٬۰۰۰) بیشتر شود، قدیمی‌ترین لاگ‌ها حذف می‌شوند

عملیات دستی#

dart
// Force flush all buffered logs
await AbrovaTrace.flushLogs();

// Check buffer status
print('Pending logs: ${AbrovaTrace.pendingLogCount}');

پیکربندی#

گزینهنوعاجباریتوضیح
sourceIdString?خیرشناسه‌ی این منبع لاگ (مثلاً "my-flutter-app"). برای ارسال دسته‌ای لازم است؛ بدون آن هر لاگ در یک درخواست جدا ارسال می‌شود و ارسال‌های ناموفق دوباره تلاش نمی‌شوند
sourceNameString?خیرنام خوانا برای این منبع
batchSizeintخیروقتی بافر به این اندازه برسد ارسال می‌شود (پیش‌فرض: ۵۰)
flushIntervalDurationخیرحداکثر زمان پیش از ارسال (پیش‌فرض: ۵ ثانیه)

بافر حداکثر ۱٬۰۰۰ لاگ نگه می‌دارد (قدیمی‌ترین‌ها اول حذف می‌شوند). این سقف ثابت است و با enableLogging() تغییر نمی‌کند.

توصیه‌ها#

زود فعال کنید

لاگ‌گیری را درست بعد از AbrovaTrace.init() فعال کنید تا همه‌ی رویدادها ثبت شوند

از sourceId استفاده کنید

یک sourceId معنادار تنظیم کنید تا لاگ‌های این اپ در داشبورد قابل تشخیص باشند

metadata اضافه کنید

metadata ساخت‌یافته (شناسه‌ی کاربر، نام صفحه و ...) بگذارید تا دیباگ آسان‌تر شود

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

برای رویدادهای عادی info، برای مشکلات احتمالی warn و برای خطاها error

پیش از بستن ارسال کنید

پیش از بسته شدن اپ AbrovaTrace.flushLogs() را صدا بزنید تا همه‌ی لاگ‌ها ارسال شوند

زیاده‌روی نکنید

در حلقه‌های فشرده لاگ نزنید؛ بافر سقف دارد و قدیمی‌ترین لاگ‌ها را حذف می‌کند

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