Skip to Content
मूल अवधारणाएँनिदान एवं बग रिपोर्ट

निदान, लॉग और बग रिपोर्ट

प्रत्येक ट्रैसलेट ऐप रिकॉर्ड करता है कि एसडीके डिवाइस पर क्या कर रहा है - अनुमतियाँ, ट्रैकिंग स्थिति, सेंसर उपलब्धता और एक रोलिंग लॉग। tracelet_doctor पैकेज उन सभी को एक में बदल देता है एक-टैप डायग्नोस्टिक स्क्रीन और एक कॉपी-एंड-पेस्ट बग रिपोर्ट, तो कब कुछ गलत लग रहा है तो आप (या आपके उपयोगकर्ता) ठीक-ठीक पकड़ सकते हैं कि क्या हुआ।

3.3.0 में नया: डॉक्टर का कॉपी बटन अब सब कुछ को बंडल करता है (स्वास्थ्य + कॉन्फ़िगरेशन + लॉग + टेलीमैटिक्स) एक एकल मार्कडाउन रिपोर्ट में, और एक नया शेयर बटन आपको इसे .md फ़ाइल के रूप में डाउनलोड/ईमेल करने देता है। वहाँ भी एक है लॉग व्यूअर में लॉग कॉपी करें बटन।


30 सेकंड का संस्करण

tracelet_doctor को देव निर्भरता के रूप में जोड़ें (नियमित नहीं) - यह एक डिबगिंग है टूल, और फ़्लटर रिलीज़ बिल्ड से डेव-निर्भरता पैकेज को बाहर करता है:

flutter pub add dev:tracelet_doctor

फिर kDebugMode के पीछे उपयोग की निगरानी करें ताकि यह रिलीज़ बिल्ड से वृक्ष-हिल जाए:

import 'package:flutter/foundation.dart' show kDebugMode; import 'package:tracelet_doctor/tracelet_doctor.dart'; // Open the diagnostic screen from a debug menu, button, or shake gesture: if (kDebugMode) { TraceletDoctor.show(context); }

इससे एक शीट खुलती है:

  • चेतावनी - कुछ भी जो ट्रैकिंग को नुकसान पहुंचा सकता है (अनुमति अस्वीकृत, बिजली की बचत मोड, आक्रामक ओईएम, कोई महत्वपूर्ण-गति सेंसर नहीं, नकली स्थान…)।
  • अनुमतियाँ, ट्रैकिंग स्थिति, बैटरी और OEM, कॉन्फ़िगरेशन, सेंसर, डेटाबेस।
  • एक लॉग देखें बटन (अंतिम 500 लॉग लाइनें)।
  • ऊपर दाईं ओर बग रिपोर्ट कॉपी करें और बग रिपोर्ट साझा करें बटन।

बग रिपोर्ट दाखिल करना (आपके उपयोगकर्ताओं के लिए)

जब कोई उपयोगकर्ता किसी समस्या की रिपोर्ट करता है, तो उसकी मदद करने का सबसे तेज़ तरीका ट्रैसलेट प्राप्त करना है बग रिपोर्ट. उनसे कहें:

  1. ट्रेसलेट डॉक्टर स्क्रीन खोलें (जहां भी आपने इसे अपने ऐप में रखा हो)।
  2. ऊपर दाईं ओर शेयर आइकन (↗) — या कॉपी (⧉) — पर टैप करें।
  3. इसे अपने सपोर्ट चैनल या GitHub इश्यू में पेस्ट/अटैच करें आपके अपने किसी भी ऐप लॉग के साथ*।

रिपोर्ट सादा मार्कडाउन है और इस तरह दिखती है:

# Tracelet Bug Report _Generated by Tracelet Doctor at 2026-06-14T10:22:31Z (UTC)._ ## Health check | Field | Value | |---|---| | Platform | android | | OS version | 14 | | Manufacturer | Xiaomi | | Aggressive OEM | true (rating 5/5) | | Location permission | always | | Power save mode | true | ... **Warnings (2):** - ⚠️ Power Save mode is ON — may throttle background tracking - ⚠️ Device manufacturer may kill background apps ## Active configuration ```json { "जियो": { "डिस्टेंसफ़िल्टर": 10.0, ... }, "http": { "url": ""redacted»", "headers": ""redacted"", ... } } ``` ## Telematics events (most recent) | Type | Severity | Lat | Lng | Time | Synced | ... ## Logs (last 500) 2026-06-14T10:21:55Z [INFO] Tracking started (mode: location) 2026-06-14T10:22:03Z [WARN] Location accuracy degraded ...

रहस्यों को स्वचालित रूप से संपादित किया जाता है। कॉन्फ़िगरेशन को जोड़ने से पहले रिपोर्ट, कोई भी मान जिसकी कुंजी यूआरएल, हेडर, पैरामीटर, कुंजी, टोकन या जैसी दिखती है प्रमाणपत्र को «redacted» से बदल दिया गया है। आपका सिंक यूआरएल, एपीआई कुंजी और प्रमाणीकरण हेडर कभी भी चिपकाई गई रिपोर्ट में समाप्त नहीं होते। (बाकी सब कुछ - दूरी फिल्टर, सटीकता, फीचर टॉगल - रखा जाता है, क्योंकि यही डिबगिंग में मदद करता है।)


सीधे लॉग के साथ कार्य करना

डॉक्टर उन्हीं लॉग्स को पढ़ता है जिन्हें आप एपीआई से एक्सेस कर सकते हैं। यदि आपके लिए यह उपयोगी है अपनी स्वयं की डायग्नोस्टिक्स स्क्रीन बनाना चाहते हैं या लॉग को अपने बैकएंड पर भेजना चाहते हैं।

// Read the most recent log entries. final logs = await Tracelet.getLogs(500); for (final entry in logs) { print('${entry.timestamp} [${entry.level}] ${entry.message}'); } // Wipe stored logs (e.g. after the user files a report). await Tracelet.clearLogs();

प्रत्येक LogEntry में id, level (DEBUG/INFO/WARN/ERROR), message, होते हैं। और एक ISO-8601 timestamp। लॉग को ऑन-डिवाइस SQLite डेटाबेस में संग्रहीत किया जाता है वे ऐप पुनरारंभ होने से बचे रहते हैं और पृष्ठभूमि गतिविधि कैप्चर करते हैं - बिल्कुल ऐसी घटनाएँ जिन्हें अन्यथा डिबगर में देखना असंभव है।

कितना लॉग किया गया आपके LoggerConfig (लॉग स्तर) द्वारा नियंत्रित किया जाता है। निचला डेटाबेस को छोटा रखने के लिए उत्पादन का स्तर; जबकि इसे debug तक बढ़ाएं किसी मुद्दे को पुन: प्रस्तुत करना।


अपनी खुद की रिपोर्ट बनाना

यदि आप स्वयं रिपोर्ट तैयार करना चाहते हैं (उदाहरण के लिए इसे अपने क्रैश के साथ संलग्न करें)। रिपोर्टर, या अपना ऐप संस्करण जोड़ें), बिल्डर को सीधे कॉल करें:

import 'package:tracelet_doctor/tracelet_doctor.dart'; final report = await TraceletBugReport.build( appName: 'My App', appVersion: '2.4.1', // e.g. from package_info_plus logLimit: 500, telematicsLimit: 100, ); // Now copy, share, upload, or attach `report` however you like.

आप किसी भी कॉन्फिग मैप पर केवल सीक्रेट-रेडेक्शन हेल्पर का पुन: उपयोग कर सकते हैं - आसान यदि आप अपना स्वयं का कॉन्फ़िगरेशन लॉग करते हैं:

final safe = TraceletBugReport.redactConfig(Tracelet.activeConfig.toMap());

रिपोर्ट में क्या है (धोखाधड़ी)

धारास्रोतयह क्यों मदद करता है
स्वास्थ्य जांचTracelet.getHealth()अनुमतियाँ, ओईएम/बैटरी, सेंसर, डिवाइस - सामान्य संदिग्ध
चेतावनियाँगणना”ट्रैकिंग पृष्ठभूमि में रुक जाती है” का संभावित कारण
सक्रिय विन्यासTracelet.activeConfig (संशोधित)वास्तव में प्रभावी सेटिंग्स की पुष्टि करता है - किसी भी लागू रिमोट कॉन्फ़िगरेशन (3.6.10+) सहित
टेलीमैटिक्स इवेंटTracelet.getTelematicsEvents()हाल की ड्राइविंग/प्रभाव घटनाएँ (3.3.0)
लॉग्सTracelet.getLogs()एसडीके ने क्या किया, इसकी एक समयरेखा, जिसमें पृष्ठभूमि भी शामिल है

जानकर अच्छा लगा

  • गोपनीयता पहले—रिपोर्ट पूरी तरह से डिवाइस पर तैयार की जाती है। कुछ नहीं जब तक आप इसे नहीं भेजते तब तक अपलोड किया जाता है। रहस्यों को शामिल करने से पहले उन्हें संशोधित किया जाता है।
  • प्रारंभ न होने पर काम करता है - यदि ट्रेसलेट अभी तक प्रारंभ नहीं हुआ है, तो डॉक्टर क्रैश होने और प्रत्येक रिपोर्ट के बजाय एक अनुकूल “प्रारंभिक नहीं” स्क्रीन दिखाता है अनुभाग सुंदर ढंग से ख़राब हो जाता है।
  • इसे डिबग बिल्ड में शिप करें - कई टीमें TraceletDoctor.show(context) को तार करती हैं शेक जेस्चर या एक छिपा हुआ डिबग मेनू ताकि क्यूए और समर्थन एक रिपोर्ट प्राप्त कर सकें सेकंड.