Skip to Content
Conceptos básicosDiagnóstico e informes de errores

Diagnósticos, registros e informes de errores

Cada aplicación Tracelet registra lo que hace el SDK en el dispositivo: permisos, estado de seguimiento, disponibilidad de sensores y un registro continuo. El El paquete tracelet_doctor convierte todo eso en un pantalla de diagnóstico de un toque y un informe de error de copiar y pegar, para que cuando algo parece mal, usted (o sus usuarios) pueden capturar exactamente lo que sucedió.

Nuevo en 3.3.0: el botón Copiar del Doctor ahora incluye todo (estado + configuración + registros + telemática) en un único informe Markdown, y un nuevo botón Compartir le permite descargarlo o enviarlo por correo electrónico como un archivo .md. También hay un Botón Copiar registros en el visor de registros.


La versión de 30 segundos

Agregue tracelet_doctor como dependencia de desarrollo (no normal): es una depuración herramienta, y Flutter excluye los paquetes de dependencia de desarrollo de las versiones de lanzamiento:

flutter pub add dev:tracelet_doctor

Luego proteja el uso detrás de kDebugMode para que quede eliminado de las versiones de lanzamiento:

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); }

Eso abre una hoja con:

  • Advertencias: cualquier cosa que pueda afectar el seguimiento (permiso denegado, ahorro de energía). modo, OEM agresivo, sin sensor de movimiento significativo, ubicaciones simuladas…).
  • Permisos, estado de seguimiento, batería y OEM, configuración, sensores, base de datos.
  • Un botón Ver registros (las últimas 500 líneas de registro).
  • Botones Copiar informe de error y Compartir informe de error en la parte superior derecha.

Presentar un informe de error (para sus usuarios)

Cuando un usuario informa un problema, la forma más rápida de ayudarlo es obtener un Tracelet informe de error. Diles que:

  1. Abra la pantalla Tracelet Doctor (dondequiera que la haya colocado en su aplicación).
  2. Toca el ícono Compartir (↗) — o Copiar (⧉) — en la parte superior derecha.
  3. Péguelo/adjunte en su canal de soporte o en el problema de GitHub, junto con cualquiera de sus propios registros de aplicaciones.

El informe es Markdown simple y se ve así:

# 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 { "geo": { "distanciaFilter": 10.0, ... }, "http": { "url": "«redactado»", "headers": "«redactado»", ... } } ``` ## 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 ...

Los secretos se redactan automáticamente. Antes de agregar la configuración al informe, cualquier valor cuya clave parezca una URL, encabezado, parámetro, clave, token o El certificado se reemplaza por «redacted». Su URL de sincronización, claves API y autenticación los encabezados nunca terminan en un informe pegado. (Todo lo demás: filtros de distancia, precisión, alternancia de funciones, se mantiene porque eso es lo que ayuda a la depuración).


Trabajar con registros directamente

El Doctor lee los mismos registros a los que puede acceder desde la API. Esto es útil si desea crear su propia pantalla de diagnóstico o enviar registros a su backend.

// 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();

Cada LogEntry tiene id, level (DEBUG/INFO/WARN/ERROR), message, y un ISO-8601 timestamp. Los registros se almacenan en la base de datos SQLite del dispositivo, por lo que sobreviven a los reinicios de la aplicación y capturan la actividad en segundo plano, exactamente lo mismo. eventos que de otro modo serían imposibles de ver en un depurador.

La cantidad que se registra está controlada por su LoggerConfig (nivel de registro). Más bajo el nivel de producción para mantener pequeña la base de datos; súbelo a debug mientras reproducir un problema.


Creando tu propio informe

Si prefiere generar el informe usted mismo (por ejemplo, adjuntarlo a su propio informe de fallos) reporter, o agregue la versión de su aplicación), llame al creador directamente:

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.

También puedes reutilizar solo el asistente redacción secreta en cualquier mapa de configuración: útil si registra su propia configuración:

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

¿Qué hay en el informe (hoja de referencia)?

SecciónFuentePor qué ayuda
Control de saludTracelet.getHealth()Permisos, OEM/batería, sensores, dispositivo: los sospechosos habituales
AdvertenciascalculadoLa causa probable de “el seguimiento se detiene en segundo plano”
Configuración activaTracelet.activeConfig (redactado)Confirma la configuración realmente vigente, incluida cualquier configuración remota (3.6.10+)
Eventos telemáticosTracelet.getTelematicsEvents()Eventos recientes de conducción/impacto (3.3.0)
RegistrosTracelet.getLogs()Una cronología de lo que hizo el SDK, incluso en segundo plano

Es bueno saberlo

  • Privacidad primero: el informe se genera completamente en el dispositivo. Nada se carga a menos que lo envíes. Los secretos se redactan antes de incluirlos.
  • Funciona cuando no está inicializado — si Tracelet aún no se ha iniciado, el Doctor muestra una pantalla amigable “no inicializada” en lugar de fallar, y cada informe La sección se degrada con gracia.
  • Envíelo en versiones de depuración: muchos equipos conectan TraceletDoctor.show(context) a un Agite el gesto o un menú de depuración oculto para que el control de calidad y el soporte puedan obtener un informe en artículos de segunda clase.
Last updated on