Подробное руководство по реализации 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()
Этот метод помогает удалить все журналы с устройства.
Заключение
Я надеюсь, что это дает больше информации о функциях, предоставляемых библиотекой.
Спасибо за прочтение. Удачной регистрации!