Подтвердить что ты не робот

Какую платформу ведения журнала Android использовать?

Мой вопрос, кажется, легко подотчетен, но есть несколько хороших решений. Мне нравится выбирать "лучший".

Доступные рамки (не стесняйтесь предлагать больше):

Плюсы/Минусы:

андролог:

  • Pro: Подобно системе ведения журнала Android, поэтому в существующем коде есть только небольшие изменения; Возможность отправлять отчеты о сбоях более подробно в отчете об ошибке (журналы вокруг исключения); Хорошие журналы
  • Con: нет стандартного java-метода "getLogger"; Конфигурация производства достижима путем загрузки файла свойств в SDCard; Мне нужно вызвать init logging вручную; Необходимо создать LOG_TAG как константы или взломать его для создания констант тегов журналов по Aspect для достижения стандартного поведения: теги - это имена классов; Когда ведение журнала является бизнес-требованием, нам нужно его протестировать. Тестирование статических вызовов на Android почти невозможно; Логгер не может быть внедрен фреймворком

Log4J-Android:

  • Pro: стандартный способ входа в Java; Совместимость с SLF4J; Возможность анализировать файлы свойств;
  • Con: нет встроенной системы отчетов о сбоях; Мне кажется: его обычно не используют, поэтому мне может быть опасно его использовать;

SLF4J-Android:

  • Pro: Кажется, это будет развито больше людей, таких как Log4J-Android; logger.debug("Some log message. Details: {}", someObject.toString()); - хороший и эффективный способ пропускать конкатенации строк, если журнал отключен; легкая привязка регистратора, которая делегирует команду android.util.Log.
  • Con: автоматически создаваемые теги журналов длиной <= 23 символа из-за ограничения длины тегов журнала на платформе Android (например, тег com.example.myapp.MyClass, переведенный на c*.e*.m*.MyClass), что может привести к тому же журналу тег для разных классов (например, com.example.app.MyClass и com.example.anotherapp.MyClass оба переводят на c*.e*.a*.MyClass); Нет встроенной системы отчетов о сбоях.

Кроме того, мне нравится поведение Androlog, но я разработчик Java, знакомый с log4j/slf4j. Нам определенно нужна система отчетов о сбоях, но есть несколько фреймворков для отчетов о сбоях (помимо отчета об авариях по умолчанию для Android).

Я могу объединить некоторые из них, например, использовать Log4J android, но создать приложение для использования рамки androlog, но рано или поздно это будет беспорядок, чего следует избегать.

Спасибо за ваши предложения, я надеюсь, что результаты помогут решить другие в будущем.

Изменить: Как уже упоминалось ниже, я могу объединить для ex: log4j-android с slf4j (whitch, который я предпочитаю делать, если я буду использовать log4j, потому что поддержка форматирования журнала ( "{}",...)), но он не отвечает на вопрос. Я должен выбрать структуру, тогда я могу украсить ее фасадом SLF4J.

4b9b3361

Ответ 1

Лучший способ. Я думаю, это использовать API SLF4J + некоторые из его реализации.

Для приложений Android вы можете использовать следующее:

  • Android Logger - это легкая, но простая в использовании реализация SLF4J (< 50 Kb).
  • LOGBack - самая мощная и оптимизированная реализация, но ее размер составляет около 1 МБ.
  • Любой другой по вашему вкусу: slf4jandroid, slf4j-android.

Ответ 2

Пожалуйста, проверьте этот первый ответ

В нем говорится:

SLF4J - это в основном слой абстракции. Это не журнал реализация. Это означает, что если вы пишете библиотеку и используете SLF4J, вы можете предоставить эту библиотеку кому-то другому, и они могут выберите, какую реализацию каротажа использовать с SLF4J, например. log4j или API регистрации Java. Это помогает предотвратить зависание проектов на множестве API протоколирования только потому, что они используют библиотеки, которые зависит от них.

Итак, подведем итог: SLF4J не заменяет log4j, они работают вместе. Это удаляет зависимость от log4j из вашей библиотеки/приложения.

Ответ 3

Я пробовал оригинальный slf4j.org-android, но, к сожалению, эта банка не смогла получить отладочные/подробные сообщения для регистрации, поскольку она внутренне использует LOG.isDebugEnabled() для вывода отладки, который всегда кажется ложным.

в настоящее время я использую альтернативный вариант lp0-slf4j-android, который использует файл свойств с параметрами ведения журнала, где я также могу получить отладочную/подробные сообщения, если они включены.