Какую платформу ведения журнала 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.

Ответ 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, который использует файл свойств с параметрами ведения журнала, где я также могу получить отладочную/подробные сообщения, если они включены.