Вопрос по android – Какой фреймворк для Android? [закрыто]

53

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

Available frameworks (feel free to suggest more):

Pros/Cons:

Androlog:

  • Pro: Similar to Android logging framework, so there are only small changes in the existing code; Able to send crash reports with more detail in the error report (the logs around the exception); Nice logs
  • Con: No standard java "getLogger" approach; Production configuration achievable by uploading property file to sdcard; I need to call init logging manually; Need to create LOG_TAG like constants, or hack it to create log tag constants by Aspect to achieve the standard behavior: tags are the class names; When logging is a business requirement, we need to test it. Testing static calls on Android nearly impossible; Logger can not be injected by framework

Log4J-Android:

  • Pro: Standard way to log in Java; Compatible with SLF4J; Able to parse property files;
  • Con: No built-in crash report system; Seems to me: its not commonly used, so it might me dangerous to use it;

SLF4J-Android:

  • Pro: Seems to be developed by more people like Log4J-Android; The logger.debug("Some log message. Details: {}", someObject.toString()); is a good, and effective way to skip string concatenations if the logger is turned off; lightweight logger binding that delegates to android.util.Log.
  • Con: Auto generated log tags that are <= 23 characters long due to a length restriction of log tags on the Android platform (e.g., com.example.myapp.MyClass tag translated to c*.e*.m*.MyClass), which can result in the same log tag for different classes (e.g., com.example.app.MyClass and com.example.anotherapp.MyClass both translate to c*.e*.a*.MyClass); No built in crash reporting system.

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

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

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

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

Ограничение в 23 символа не является недостатком SLF4J, это ограничение Android. Другие каркасы журналов не могут сделать это также. SLF4J, по крайней мере, упоминает это в документах и пытается сократить его. Dzmitry Lazerka
если вы используете kotlin, также можно использовать:github.com/MicroUtils/kotlin-logging oshai
Нет упоминаний о встроенной в Android платформе логирования? Piovezan
Из твоего описания андролог звучит лучше, но я вижу, что для этого нужен Maven. Я не решаюсь добавить еще одну зависимость к моей установке без существенных преимуществ. Tom

Ваш Ответ

3   ответа
12

это использовать SLF4J API + некоторые его реализации.

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

Android Logger is the lightweight but easy-to-configure SLF4J implementation (< 50 Kb). LOGBack is the most powerful and optimized implementation but its size is about 1 Mb. Any other by your taste: slf4jandroid, slf4j-android.
Logback для Android кажется очень продвинутым:github.com/tony19/logback-android/wiki/FAQ
пожалуйста примите к сведениюgithub.com/kovmarci86/slf4j-androlog SLF4J Андролог обязательный. Marcell
5

этот первый ответ

Это говорит:

SLF4J is basically an abstraction layer. It is not a logging implementation. It means that if you're writing a library and you use SLF4J, you can give that library to someone else to use and they can choose which logging implementation to use with SLF4J e.g. log4j or the Java logging API. It helps prevent projects from being dependent on lots of logging APIs just because they use libraries that are dependent on them.

So, to summarise: SLF4J does not replace log4j, they work together. It removes the dependency on log4j from your library/app.

Получил больше информации от этого, но я ищу logger lib, который будет собирать все журналы и обновления на сервер / облако или в файл, который действительно полезен! Я думаю, мне нужно опубликовать это как отдельный вопрос!
Связанный репозиторий представляет собой простую библиотеку-обертку SLF4J Logger, в качестве выхода которой используется Androlog. При этом вы получаете упакованный Logger из LoggerFactory.getLogger (). Мои предпочтения также Андролог. Увидеть:github.com/kovmarci86/slf4j-androlog/blob/master/slf4j-androlog/… Marcell
Хорошо, я знаю это. Дело в том, что библиотека SLF4J-android НЕ совместима напрямую с Log4J-android, они обе содержат реализации. (но переключаться с одного на другой легко). Проверьте ссылки на проекты. Marcell
Привет, Марсел, Андролог - мое первое предпочтение, но, как вы сказали, у него нет подхода, подобного Java, как у getLogger, я думаю, что лучше объединить некоторые из этих структур.
2

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

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

как я могу включитьisDebugEnabled()==true во время выполнения? в предоставленных вами ссылках не было информации об этой теме. пока оригинал slf-оригинал зависит отisDebugEnabled() и у меня нет возможности включить его во время выполнения, это бесполезно для меня.
about isDebugEnabled () всегда возвращает false. Уровень журнала по умолчанию на Android - Информация. Если вы хотите видеть больше выходных данных из ваших собственных журналов, вам нужно явно включить ведение журнала отладки. Увидеть:developer.android.com/tools/debugging/debugging-log.html а такжеdeveloper.android.com/reference/android/util/Log.html, По сути, вы должны включить отладку или подробное ведение журнала во время выполнения, если вы хотите, чтобы isDebugEnabled () возвращал true.

Похожие вопросы