Muy buenas, me llamo Miguel y en esta ocasión les traigo un nuevo post.
Índice
Una guía detallada sobre cómo implementar HyperTrack / HyperLog
y registrar datos en un servidor remoto con Kotlin
El registro es necesario cuando un desarrollador necesita depurar el problema en cualquier parte del código. En Android tenemos Log
, que es super útil a la hora de buscar cualquier error en el código.
Si desea ver o guardar los registros de forma remota en su servidor, HyperLog
es una de las opciones más populares, ya que está construido sobre Log
.
Ahora, hay numerosas publicaciones de blog que pueden ayudarlo a comprender qué es HyperLog
y cómo funciona (como esta ) usando Java.
El artículo de hoy es una guía detallada para implementarlo usando Kotlin y una exploración de sus características, por lo que si tiene dificultades para comprenderlo o convertir el código Java a Kotlin, esto debería aclarar las cosas.
Una vez que la biblioteca se agrega a las dependencias en el archivo build.gradle
de la aplicación, puede comenzar a grabar los mensajes de registro y enviarlos al servidor remoto a través del siguiente fragmento de código:
HyperLog.initialize(this) HyperLog.setLogLevel(Log.VERBOSE) HyperLog.d("Test logs","Debug Log") HyperLog.setURL("https://xxxxxxx0xxxxx.x.pipedream.net/") HyperLog.pushLogs(this, false, object: HLCallback() { override fun onSuccess(response: Any) { //Handle success } override fun onError(Error: HLErrorResponse) { //Handle errors } })
Fragmento de código de muestra para la implementación de HyperLog con Kotlin.
El fragmento de código anterior es de la actividad del iniciador de una aplicación donde se ha inicializado HyperLog
. El nivel de registro está configurado para mostrar qué tipo de registro se realizará más adelante.
Después de especificar el tipo de registro con su etiqueta y mensaje, la URL
se ha configurado para validar el envío de registros al servidor remoto (en este caso, RequestBin
).
Después de que se envían los registros, ya sea a través de un archivo o en texto plano, los métodos de devolución de llamada de éxito y error completan la tarea.
A continuación se muestra una guía detallada de la biblioteca HyperLog
en Kotlin.
HyperLog.initialize(context: Context, expiryTimeInSecond: Int, logFormat: LogFormat)
Esto inicializa la funcionalidad HyperLog
en la aplicación. De forma predeterminada, los registros de siete días o más se eliminan automáticamente. Por lo tanto, envíelos al servidor remoto dentro de ese tiempo o inmediatamente.
El contexto es un parámetro obligatorio de este método. Otros pueden eliminarse durante la inicialización.
HyperLog.setLogFormat(logFormat: LogFormat)
Esto define un formato de mensaje de registro personalizado. Los mensajes de registro personalizados son útiles. El desarrollador puede elegir qué detalles necesita en los registros y en qué estructura.
HyperLog.setLogLevel(logLevel: Int)
HyperLog.d(tag: String, message: String)
Al igual que los otros niveles de registro, si se usa depuración, entonces d
es para eso. Del mismo modo, de acuerdo con los niveles logarítmicos especificados entre Log.ASSERT
, Log.VERBOSE
, Log.DEBUG
, Log.INFO
, Log.WARN
y Log.ERROR
, a
, v
, d
, i
, w
, e
, y la excepción se utilizan, respectivamente. Exception también usa un lanzador.
HyperLog.setUrl(url: String)
Este método establece el punto final de URL
válido donde se deben enviar los registros. En caso de que esté vacío o nulo, arroja una excepción de argumento ilegal.
HyperLog.getUrl()
Cuando se establece la URL
HyperLog.setUrl()
, está disponible para toda la aplicación. Si esa URL
es necesaria en alguna otra parte de la aplicación, HyperLog.getUrl()
obtiene esa URL
desde dentro de la variable guardada en la biblioteca. Este método devuelve una cadena.
HyperLog.getExpiryTime()
Si se establece algún tiempo de caducidad para los registros, este método devuelve el tiempo en segundos. De lo contrario, devuelve el tiempo de vencimiento predeterminado (es decir, 604800
).
HyperLog.getDeviceLogs(deleteLogs: Boolean, batchNumber: Int)
Este método obtiene los registros almacenados en el dispositivo según el número de lote. Si se proporciona lo contrario, el número de lote predeterminado es 1
.
Además, elimina los registros después de obtener si deleteLogs
se establece en true
. Debido a que el valor predeterminado está establecido en true
, es obligatorio establecerlo false
en caso de que no sea necesario eliminar los registros.
HyperLog.getDeviceLogsAsStringList(deleteLogs: Boolean, batchNumber: Int)
Este método obtiene los registros almacenados como una lista de cadenas en lugar del modelo de registro del dispositivo como se describe anteriormente (en el método getDeviceLogs
).
El resto de la funcionalidad de este método es el mismo que para el método anterior.
HyperLog.getDeviceLogsInFile(context: Context, fileName: String, deleteLogs: Boolean)
Este método obtiene los registros almacenados como un objeto de archivo con el nombre de archivo proporcionado o crea el nombre de archivo de acuerdo con la marca de tiempo por sí solo.
La eliminación de los registros funciona de la misma manera que para los otros dos métodos anteriores.
HyperLog.hasPendingDeviceLogs()
Si hay registros disponibles en el dispositivo, este método regresa true
en caso de que haya registros pendientes disponibles. De lo contrario, vuelve false
.
HyperLog.getDeviceLogsCount()
Este método devuelve el número de registros de dispositivos almacenados (si los hay). De lo contrario, vuelve 0
.
HyperLog.getDeviceLogBatchCount()
Este método devuelve el número de lotes de registros de dispositivos almacenados (si los hay). De lo contrario, vuelve 0
. Cada lote contiene 5000
registros de dispositivos.
HyperLog.pushLogs(context: Context, filename:String, additionalHeaders: HashMap<String, String>, compress: Boolean, hlCallback: HLCallback)
Este método envía los registros del dispositivo al servidor como un archivo de texto o un archivo comprimido gzip
, si compress
es así true
.
De lo contrario, también se puede enviar un texto simple, manteniéndolo false
. Una vez que se envían los registros, se eliminan automáticamente del dispositivo.
Una ventaja de HyperLog
es que si el recuento de registros es mayor que el límite de consultas de registros del dispositivo, se distribuye por lotes.
Además, no es necesario tener el nombre del archivo o encabezados adicionales en el método si no se incluyen archivos, pero su presencia hace que el método sea perfecto.
Este método proporciona onSuccess
y la función onError callback
donde el éxito y el error se pueden manejar según sea necesario.
HyperLog.deleteLogs()
Este método ayuda a eliminar todos los registros del dispositivo.
Espero que esto brinde más información sobre las funcionalidades proporcionadas por la biblioteca.
Gracias por leer. ¡Feliz registro!
Añadir comentario