تسجيل (Logging) لـ Swift (iOS/macOS): أفضل المكتبات والحلول

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

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

ابدأ الدورة

تسجيل (Logging) لـ Swift (iOS/macOS): أفضل الحلول



التسجيل هو أحد الأدوات الرئيسية لمطور تطبيقات iOS و macOS. فهو يساعد في تتبع تنفيذ الكود، والعثور على الأخطاء، وتحليل سلوك المستخدمين، وتشخيص المشكلات في بيئة الإنتاج. في نظام Swift البيئي، توجد العديد من المكتبات والطرق لتنظيم التسجيل. في هذه المقالة، سنستعرض أفضلها، ومزاياها، وأمثلة على استخدامها.



لماذا نحتاج إلى التسجيل في Swift؟

يسمح التسجيل عالي الجودة بما يلي:

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


الحل المدمج: OSLog (os_log)

بدءًا من iOS 10 / macOS 10.12، توفر Apple إطار عمل قوي os_log. إنه مدمج في النظام، ويدعم الفئات (categories)، ومستويات الأهمية، والتصفية الديناميكية في وحدة تحكم Xcode وتطبيق Console.

import os.log

let logger = OSLog(subsystem: "com.yourapp.networking", category: "APIClient")os_log("طلب إلى الخادم: %{public}@", log: logger, type: .info, urlString)

// المستويات: .debug, .info, .default, .error, .faultos_log("خطأ في المصادقة: %{public}@", log: logger, type: .error, errorMessage)

الإيجابيات: لا تبعيات، أداء عالٍ، دعم Apple. السلبيات: تخصيص محدود للإخراج، صعوبة التكامل مع الخدمات السحابية.



أفضل مكتبة خارجية: CocoaLumberjack

CocoaLumberjack هو المعيار الفعلي للتسجيل في Swift و Objective-C. إنه أسرع بعدة مرات من NSLog، ويدعم الكتابة غير المتزامنة، وتدوير الملفات، وعدة مسجلات في وقت واحد، والتنسيق.

import CocoaLumberjack

// الإعدادDDLog.add(DDOSLogger.sharedInstance) // وحدة التحكمlet fileLogger = DDFileLogger()fileLogger.rollingFrequency = 60 * 60 * 24 // 24 ساعةDDLog.add(fileLogger)

// الاستخدامDDLogDebug("تصحيح: \\(someValue)")DDLogInfo("معلومات: المستخدم قام بتسجيل الدخول")DDLogWarn("تحذير: شحن البطارية منخفض")DDLogError("خطأ: فشل تحميل البيانات")

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



SwiftyBeaver: إخراج جميل وتحليلات سحابية

SwiftyBeaver هو حل شائع مع إخراج ملون لوحدة التحكم، ودعم تنسيق JSON، وخدمة سحابية مدمجة لجمع السجلات في الوقت الفعلي.

import SwiftyBeaver

let log = SwiftyBeaver.self

// إضافة وجهة وحدة التحكمlet console = ConsoleDestination()log.addDestination(console)

// اختياري: الخدمة السحابيةlet cloud = SBPlatformDestination(appID: "yourAppID", appSecret: "secret", encryptionKey: "key")log.addDestination(cloud)

log.verbose("بدء تشغيل التطبيق")log.debug("المعلمات: \\(params)")log.info("المستخدم ضغط على الزر")log.warning("انتهاء مهلة الاتصال")log.error("خطأ حرج: \\(error)")

SwiftyBeaver مناسب تمامًا للمشاريع الصغيرة والمتوسطة حيث تكون الراحة البصرية أثناء التطوير مهمة.



XCGLogger: المرونة والبساطة

XCGLogger هي مكتبة خفيفة الوزن مع إمكانيات تنسيق غنية، وتصفية حسب العلامات والمستويات. تدعم الإخراج إلى ملف، ووحدة التحكم، ووجهات مخصصة.

import XCGLogger

let log = XCGLogger.defaultlog.setup(level: .debug, showLogIdentifier: true, showFunctionName: true, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true)

log.debug("تصحيح")log.info("معلومات")log.error("خطأ")

إعداد بسيط وAPI واضح

توصيات