تسجيل السجلات في تطبيقات Swift: أفضل الممارسات
تسجيل السجلات هو أحد أهم أدوات المطور، خاصة في عالم تطبيقات الأجهزة المحمولة وسطح المكتب بلغة Swift. نظام تسجيل سجلات مُهيأ بشكل جيد لا يسمح فقط بالعثور على الأخطاء وإصلاحها بسرعة، بل يتيح أيضًا تحليل سلوك المستخدمين والأداء واستقرار التطبيق على iOS وmacOS. في هذه المقالة، سنستعرض أفضل الممارسات لتسجيل السجلات في Swift، بدءًا من الأساليب الأساسية وصولاً إلى الحلول المتقدمة باستخدام المكتبات المدمجة والجهات الخارجية.
لماذا نحتاج إلى تسجيل السجلات في Swift؟
يحل تسجيل السجلات عالي الجودة عدة مهام رئيسية:
- التصحيح: البحث السريع عن أسباب الأعطال والسلوك غير الصحيح.
- المراقبة: تتبع حالة التطبيق في الوقت الفعلي.
- التحليلات: جمع البيانات حول إجراءات المستخدم دون انتهاك الخصوصية.
- الدعم: المساعدة في إعادة إنتاج الأخطاء بناءً على السجلات من أجهزة المستخدمين.
المستويات الأساسية لتسجيل السجلات
من المعتاد في Swift استخدام مستويات قياسية لتسجيل السجلات، والتي تساعد في تصفية الرسائل حسب الأهمية:
debug— للتصحيح أثناء التطوير (عادةً ما يتم تعطيلها في الإصدار النهائي).info— معلومات مفيدة حول عمل التطبيق (تحميل الشاشات، طلبات الشبكة).notice— أحداث مهمة ليست أخطاء.error— أخطاء لا تؤدي إلى تعطل التطبيق ولكنها تتطلب الانتباه.fault— أخطاء حرجة تؤدي إلى تعطل التطبيق.
استخدام OSLog المدمج
بدءًا من iOS 10 وmacOS Sierra، توصي Apple باستخدام OSLog (os_log) كآلية أساسية لتسجيل السجلات. إنه فعال وآمن ومتكامل مع أدوات Xcode (Console.app).
مثال على الاستخدام الأساسي:
import os.log
let logger = Logger(subsystem: "com.example.myapp", category: "network")
func fetchData() { logger.info("بدء تحميل البيانات") // ... منطق الطلب logger.debug("تم استلام الرد: \\(response)")}مزايا OSLog:
- تأثير منخفض على الأداء.
- تصفية تلقائية حسب subsystem وcategory.
- دعم التصفية الديناميكية في Console.app.
- الأمان — لا تحتوي السجلات على بيانات شخصية بشكل افتراضي.
مكتبات الجهات الخارجية: SwiftyBeaver وCocoaLumberjack
على الرغم من أن OSLog يغطي معظم السيناريوهات الأساسية، إلا أنه غالبًا ما يتم اختيار حلول من جهات خارجية للمشاريع المعقدة. دعنا نستعرض مكتبتين شائعتين.
SwiftyBeaver
SwiftyBeaver هي مكتبة خفيفة ومرنة تدعم الإخراج الملون إلى وحدة التحكم، والكتابة إلى ملف، والتكامل مع الخدمات السحابية (مثل Logtail).
import SwiftyBeaver
let log = SwiftyBeaver.self
// إضافة وجهة وحدة التحكمlet console = ConsoleDestination()log.addDestination(console)
// تسجيلlog.info("تم تشغيل التطبيق")log.error("خطأ في الشبكة: \\(error.localizedDescription)")CocoaLumberjack
CocoaLumberjack هي مكتبة أكثر نضجًا وقوة، تدعم الكتابة غير المتزامنة، وتدوير الملفات، والمُنسقات المخصصة. إنها مثالية للمشاريع الكبيرة ذات متطلبات الأداء العالية.
import CocoaLumberjack
DDLog.add(DDOSLogger.sharedInstance) // الإخراج إلى وحدة التحكمlet fileLogger = DDFileLogger()fileLogger.rollingFrequency = 60 * 60 * 24 // التدوير كل يومDDLog.add(fileLogger)
DDLogInfo("تم تسجيل دخول المستخدم")DDLogError("خطأ حرج: \\(error)")أفضل الممارسات لتسجيل السجلات في Swift
1. لا تقم بتسجيل البيانات الحساسة
تجنب تسجيل كلمات المرور، والرموز المميزة، وأرقام بطاقات الائتمان، وغير