Swift अनुप्रयोगों में लॉगिंग: शुरुआती लोगों के लिए सर्वोत्तम अभ्यास

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift अनुप्रयोगों में लॉगिंग: शुरुआती लोगों के लिए सर्वोत्तम अभ्यास



लॉगिंग डेवलपर के शस्त्रागार में सबसे महत्वपूर्ण उपकरणों में से एक है। इसके बिना, प्रोडक्शन में जटिल बग को डीबग करना कॉफी के आधार पर भविष्यवाणी करने जैसा हो जाता है। इस लेख में, हम iOS और macOS के लिए Swift अनुप्रयोगों के लिए लॉगिंग के सर्वोत्तम अभ्यासों पर चर्चा करेंगे, बुनियादी बातों से शुरू करके उन्नत तकनीकों तक। आप सीखेंगे कि कैसे केवल कंसोल में टेक्स्ट प्रिंट न करें, बल्कि एक ऐसी प्रणाली बनाएं जो आपको बग को जल्दी से खोजने और ठीक करने में मदद करे।



प्रोडक्शन में print() का उपयोग क्यों नहीं करना चाहिए?



कई शुरुआती डेवलपर डीबग जानकारी प्रदर्शित करने के लिए print() का उपयोग करते हैं। यह विकास के चरण में काम करता है, लेकिन तैयार एप्लिकेशन में यह दृष्टिकोण कई समस्याएं पैदा करता है:



  • स्तरों पर कोई नियंत्रण नहीं: आप केवल त्रुटियों या केवल चेतावनियों को फ़िल्टर नहीं कर सकते।
  • प्रदर्शन में कमी: print() थ्रेड को सिंक्रोनस रूप से ब्लॉक करता है, जिससे UI में ध्यान देने योग्य अंतराल हो सकता है।
  • श्रेणीकरण का अभाव: सभी संदेश एक साथ ढेर हो जाते हैं, यह समझना असंभव है कि संदेश किस मॉड्यूल से आया है।
  • कोई स्थायित्व नहीं: print() का आउटपुट उपयोगकर्ता के डिवाइस पर सहेजा नहीं जाता है, आप एप्लिकेशन क्रैश होने के बाद लॉग का विश्लेषण नहीं कर पाएंगे।
  • सुरक्षा समस्याएं: गलती से छोड़ा गया print() कंसोल में संवेदनशील डेटा प्रदर्शित कर सकता है।


print() के बजाय, Unified Logging फ्रेमवर्क (iOS 10 / macOS 10.12 से उपलब्ध) से os_log का उपयोग करें।



OSLog सेटअप: मूल उदाहरण



आरंभ करने के लिए, os.log फ्रेमवर्क को इम्पोर्ट करें और अपने मॉड्यूल के लिए एक लॉगर ऑब्जेक्ट बनाएं:



import os.log

let logger = Logger( subsystem: "com.yourapp.networking", category: "API")

func fetchUsers() { logger.info("उपयोगकर्ताओं को लोड करना शुरू कर रहे हैं...") // अनुरोध तर्क logger.debug("\\(usersCount) उपयोगकर्ता प्राप्त हुए")}


पैरामीटर का विवरण:

  • subsystem — आमतौर पर आपके एप्लिकेशन का पहचानकर्ता (bundle ID)। यह लॉग को एप्लिकेशन के अनुसार समूहित करने की अनुमति देता है।
  • category — मॉड्यूल या घटक का नाम (उदाहरण के लिए, "UI", "Network", "Database")।


Xcode में, आप कंसोल में subsystem और category के अनुसार लॉग को फ़िल्टर कर सकते हैं, जो विश्लेषण को काफी सरल बनाता है।



लॉगिंग स्तर: कब क्या उपयोग करें?



Unified Logging 6 लॉगिंग स्तरों का समर्थन करता है। सही स्तर का चुनाव आधी सफलता है:



  • debug — विकास के दौरान डीबगिंग के लिए। उपयोगकर्ता के डिवाइस पर सहेजा नहीं जाता (जब तक कि विशेष प्रोफाइलिंग सक्षम न हो)।
  • info — महत्वपूर्ण घटनाओं के लिए जो विश्लेषण में उपयोगी हो सकती हैं (उदाहरण के लिए, स्क्रीन लॉन्च, सफल अनुरोध)।
  • notice — मानक स्तर। उन घटनाओं के लिए उपयोग किया जाता है जो त्रुटियां नहीं हैं, लेकिन ध्यान देने योग्य हैं।
  • error — संभाली गई त्रुटियों के लिए (उदाहरण के लिए, डेटा लोड करने में विफल, लेकिन एप्लिकेशन काम करना जारी रखता है)।
  • fault — गंभीर विफलताओं के लिए जो एप्लिकेशन क्रैश या डेटा हानि का कारण बनती हैं।
  • critical — शायद ही कभी उपयोग किया जाता है, विशेष रूप से गंभीर स्थितियों के लिए (उदाहरण के लिए, डेटाबेस भ्रष्टाचार)।


import os.log

let logger = Logger(subsystem: "com.yourapp", category: "general")

logger.debug("केवल डीबगिंग के लिए: \\(someVariable)")logger.info("उपयोगकर्ता ने प्रोफ़ाइल स्क्रीन खोली")logger.notice("असामान्य परिदृश्य का पता चला")logger.error("नेटवर्क त्रुटि: \\(error.localizedDescription)")logger.fault("गंभीर त्रुटि: एप्लिकेशन बंद हो रहा है")

ब्लॉग

पुस्तक अनुशंसाएँ