مراقبة وتسجيل تطبيقات Swift: تصحيح الأخطاء بدون ألم

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

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

ابدأ الدورة

هل يعمل تطبيقك بشكل مثالي؟ دعنا نتحقق

\n\n

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

\n\n

في هذه المقالة، سنشرح كيفية إعداد مراقبة تطبيقات Swift بحيث تنام بسلام. لا نظرية جافة - فقط كود حي، حالات واقعية، وحيل جمعتها على مر السنين. هيا بنا!

\n\n

لماذا التسجيل في Swift ليس مجرد print()

\n\n

الاندفاع الأول لأي مطور هو وضع print("كل شيء معطل هنا") في كل منعطف. وهذا يعمل... حتى تقوم بإصدار التطبيق. في الإنتاج، يختفي print في الفراغ، ويبقى المستخدم وحيدًا مع الخلل. نحتاج إلى شيء أكثر.

\n\n

تسجيل تطبيقات Swift الحديث هو بيانات منظمة، مستويات أهمية، وإمكانية جمع عن بعد. تقدم Apple أداة قوية - OSLog. إنها خفيفة وسريعة ومضمنة مباشرة في النظام. دعنا نرى كيف نروضها.

\n\n

OSLog: المستوى الأساسي

\n\n

نقوم بتضمين الإطار وننشئ مسجلاً:

\n\n
import OSLog\n\nlet logger = Logger(\n    subsystem: "com.pythonlib.monitoring",\n    category: "network"\n)\n\nfunc fetchUserData() {\n    logger.info("بدء تحميل بيانات المستخدم")\n    // ... كود الطلب ...\n    logger.debug("تم تلقي الرد: \\(response.statusCode)")\n}
\n\n

لاحظ subsystem و category. هذه هي علاماتك للتصفية. عندما يكون لديك 50 وحدة، ستتمكن من تصفية سجلات الشبكة فقط أو سجلات قاعدة البيانات فقط - بدون ضوضاء زائدة.

\n\n

مستويات التسجيل: متى تصرخ ومتى تهمس

\n\n

يدعم OSLog ستة مستويات. إليك كيفية استخدامها:

\n\n
    \n
  • debug - للتطوير، يتم تعطيله في الإصدار (إذا لم يتم تمكينه بشكل صريح).
  • \n
  • info - معلومات مفيدة لا تزعج وحدة التحكم.
  • \n
  • notice - أحداث مهمة، مثل بدء التشغيل الناجح.
  • \n
  • error - أخطاء يمكن معالجتها.
  • \n
  • fault - أعطال حرجة قد يتعطل بعدها التطبيق.
  • \n
\n\n

مثال مع خطأ حقيقي:

\n\n
func handleApiError(_ error: Error) {\n    logger.error("خطأ API: \\(error.localizedDescription, privacy: .public)")\n    // privacy: .public - لرؤية النص في السجلات، وإلا فسيتم إخفاؤه\n}
\n\n

مراقبة تطبيقات Swift: المقاييس والأداء

\n\n

السجلات هي الماضي. مراقبة تطبيقات Swift هي الحاضر. تريد أن تعرف ما يحدث الآن: كم من الذاكرة يستهلك كودك، هل الرسوم المتحركة بطيئة، هل ينخفض معدل الإطارات.

\n\n

توفر Apple MetricKit - إطار لجمع التشخيصات على أجهزة المستخدمين. يجمع تقارير الأعطال، بيانات البطارية، ومقاييس بدء التشغيل. ولكن للمراقبة الكاملة، غالبًا ما يتم توصيل خدمات خارجية.

\n\n

توصيل Crashlytics (Firebase) - سريع ومؤلم

\n\n

يظل Crashlytics معيار الصناعة. إليك الإعداد الأدنى:

\n\n
import FirebaseCrashlytics\n\n// في مكان ما عند بدء التطبيق\nCrashlytics.crashlytics().setUserID("user_123")\nCrashlytics.crashlytics().setCustomValue(true, forKey: "is_premium")\n\n// تسجيل الأخطاء غير المميتة\ndo {\n    try riskyOperation()\n} catch {\n    Crashlytics.crashlytics().record(error: error)\n    logger.error("خطأ غير مميت: \\(error)")\n}
\n\n

نقطة مهمة: لا تسجل البيانات الشخصية للمستخدم دون موافقته. استخدم setUserID فقط إذا كان لديك معرف مجهول المصدر.

\n\n

نرسل م

المدونات

توصيات الكتب