Подробное руководство по реализации HyperTrack / HyperLog и регистрации данных на удаленном сервере с помощью Kotlin.

Ведение журнала необходимо, когда разработчику необходимо отладить проблему в любой части кода. В Android есть Журнал, который очень полезен при поиске ошибок в коде. Если вы хотите удаленно просматривать или сохранять журналы на своем сервере, то HyperLog является одним из популярных вариантов, поскольку он построен поверх журнала.

Сейчас в блогах есть множество сообщений, которые могут помочь вам понять, что такое HyperLog и как он работает (например, этот) с использованием Java. Сегодняшняя статья представляет собой подробное руководство по его реализации с использованием Kotlin и исследование его функций, поэтому, если вы изо всех сил пытаетесь понять это или преобразовать код Java в Kotlin, это должно прояснить ситуацию.

После добавления библиотеки в зависимости в build.gradle файле приложения вы можете начать запись сообщений журнала и отправить их на удаленный сервер с помощью следующего фрагмента кода:

Приведенный выше фрагмент кода взят из активности запуска приложения, в котором был инициализирован HyperLog. Уровень журнала установлен, чтобы показать, какой тип ведения журнала будет выполняться дальше. После указания типа журнала с его тегом и сообщением был установлен URL-адрес для проверки отправки журналов на удаленный сервер (в данном случае RequestBin). После того, как журналы отправлены через файл или в виде обычного текста, методы обратного вызова успеха и ошибки завершают задачу.

Ниже приведено подробное руководство по библиотеке HyperLog в Котлине.

Инициализация

HyperLog.initialize(context: Context, expiryTimeInSecond: Int, logFormat: LogFormat)

Это инициализирует функциональность HyperLog в приложении. По умолчанию журналы старше семи дней удаляются автоматически. Следовательно, отправьте их на удаленный сервер в течение этого времени или немедленно. Контекст - обязательный параметр этого метода. Остальные можно удалить при инициализации.

Структура ведения журнала

HyperLog.setLogFormat(logFormat: LogFormat)

Это определяет настраиваемый формат сообщения журнала. Пользовательские сообщения журнала полезны. Разработчик может выбрать, какие детали ему нужны в журналах и в какой структуре.

HyperLog.setLogLevel(logLevel: Int)

Согласно документации:

«Устанавливает уровень ведения журнала для отображения, где каждый уровень включает в себя все, что ниже него. Уровень по умолчанию - LOG_LEVEL_NONE. Перед развертыванием приложения убедитесь, что для него установлено значение Log.ERROR или LOG_LEVEL_NONE, чтобы не регистрировать конфиденциальную информацию ».

HyperLog.d(tag: String, message: String)

Как и на других уровнях журнала, если используется отладка, то для этого подходит d. Точно так же в соответствии с указанными уровнями журнала используются Log.ASSERT, Log.VERBOSE, Log.DEBUG, Log.INFO, Log.WARN и Log.ERROR, a, v, d, i, w, e и исключение соответственно. Исключение тоже использует throwable.

Установка и получение URL

HyperLog.setUrl(url: String)

Этот метод устанавливает действительную конечную точку URL-адреса, в которую необходимо отправить журналы. Если оно пустое или пустое, генерируется исключение недопустимого аргумента.

HyperLog.getUrl()

Если для URL задано HyperLog.setUrl() , он доступен для всего приложения. Если этот URL-адрес необходим в какой-либо другой части приложения, тогда HyperLog.getUrl() получает этот URL-адрес из сохраненной переменной в библиотеке. Этот метод возвращается в виде строки.

Получение срока годности

HyperLog.getExpiryTime()

Если для журналов задано какое-либо время истечения срока, этот метод возвращает время в секундах. В противном случае он возвращает время истечения срока действия по умолчанию (например, 604800).

Получение журналов устройства

HyperLog.getDeviceLogs(deleteLogs: Boolean, batchNumber: Int)

Этот метод получает сохраненные журналы в устройстве в соответствии с номером партии. Если указано иное, номер пакета по умолчанию - 1. Кроме того, он удаляет журналы после получения, если для deleteLogs установлено значение true. Поскольку по умолчанию установлено значение true, обязательно установить false на случай, если в удалении журналов нет необходимости.

HyperLog.getDeviceLogsAsStringList(deleteLogs: Boolean, batchNumber: Int)

Этот метод получает сохраненные журналы в виде списка строк, а не модели журнала устройства, как описано выше (в методе getDeviceLogs). Остальные функции этого метода такие же, как и у предыдущего метода.

HyperLog.getDeviceLogsInFile(context: Context, fileName: String, deleteLogs: Boolean)

Этот метод получает сохраненные журналы в виде файлового объекта с указанным именем файла или самостоятельно создает имя файла в соответствии с меткой времени. Удаление журналов работает так же, как и для двух других методов, описанных выше.

Доступность журнала

HyperLog.hasPendingDeviceLogs()

Если в устройстве есть какие-либо журналы, этот метод возвращает true, если доступны какие-либо ожидающие журналы. В противном случае возвращается false.

HyperLog.getDeviceLogsCount()

Этот метод возвращает количество сохраненных журналов устройства (если есть). В противном случае возвращается 0.

HyperLog.getDeviceLogBatchCount()

Этот метод возвращает количество сохраненных пакетов журнала устройства (если есть). В противном случае возвращается 0. Каждый пакет содержит 5000 журналов устройства.

Отправка журналов на сервер

HyperLog.pushLogs(context: Context, filename:String, additionalHeaders: HashMap<String, String>, compress: Boolean, hlCallback: HLCallback) 

Этот метод отправляет журналы с устройства на сервер в виде текстового файла или файла, сжатого с помощью gzip, если compress равно true. В противном случае можно также вставить простой текст, оставив его false. После отправки журналов они автоматически удаляются с устройства. Преимущество HyperLog в том, что если количество журналов превышает лимит запросов журнала устройства, он отправляется пакетами. Кроме того, нет необходимости указывать имя файла или дополнительные заголовки в методе, если файлы не включены, но их наличие делает метод идеальным. Этот метод предоставляет функции onSuccess и onError callback, в которых при необходимости можно обрабатывать успехи и ошибки.

Удалить журналы

HyperLog.deleteLogs()

Этот метод помогает удалить все журналы с устройства.

Заключение

Я надеюсь, что это дает больше информации о функциях, предоставляемых библиотекой.

Спасибо за прочтение. Удачной регистрации!