¿Qué marco de registro de Android utilizar?
Mi pregunta parece ser fácilmente responsable, pero hay varias buenas soluciones. Me gusta elegir el mejor.
Marcos disponibles (no dude en sugerir más):
- Androlog
- SLF4J Android
- Log4J – Android
Pros contras:
Androlog:
- Pro: Similar a Android marco de registro, por lo que sólo hay pequeños cambios en el código existente; Capaz de enviar informes de fallos con más detalles en el informe de errores (los registros alrededor de la excepción); Buenos registros
- Con: Ningún método java estándar "getLogger"; Configuración de la producción alcanzable subiendo el archivo de la característica a sdcard; Necesito llamar a init logging manualmente; Necesidad de crear LOG_TAG como constantes, o cortar para crear constantes de etiqueta de registro por Aspect para lograr el comportamiento estándar: las etiquetas son los nombres de clase; Cuando el registro es un requisito de negocio, necesitamos probarlo. Probando las llamadas estáticas en Android casi imposible; El maderero no puede ser inyectado por el marco
Log4J-Android:
- Pro: forma estándar de iniciar sesión en Java; Compatible con SLF4J; Capaz de analizar archivos de propiedades;
- Con: No incorporado en el sistema de informe de accidentes; Me parece: no es de uso común, por lo que podría ser peligroso para usarlo;
SLF4J-Android:
- Pro: Parece ser desarrollado por más personas como Log4J-Android; El
logger.debug("Some log message. Details: {}", someObject.toString());
Es una forma buena y eficaz de omitir concatenaciones de cadenas si el registrador está desactivado; Ligero ligero vinculante que delega aandroid.util.Log
. - Con: Etiquetas de registro generadas automáticamente que tienen <= 23 caracteres de largo debido a una restricción de longitud de las etiquetas de registro en la plataforma de Android (por ejemplo, la etiqueta
com.example.myapp.MyClass
traducida ac*.e*.m*.MyClass
) Que puede resultar en la misma etiqueta de registro para diferentes clases (por ejemplo,com.example.app.MyClass
ycom.example.anotherapp.MyClass
tanto traducir ac*.e*.a*.MyClass
); No incorporado en el sistema de informes de accidentes.
Además de estos, me gusta el comportamiento de Androlog, pero soy un dev de Java, familiarizado con log4j / slf4j. Definitivamente vamos a necesitar el sistema de informes de fallos, pero hay varios marcos para informes de fallos (al lado del informe de fallos por defecto de Android).
- Cómo imprimir registros en la consola cmd mientras se ejecuta prueba de instrumento android
- Imprimir el contenido de un paquete a Logcat?
- ¿Cuál es el significado del registro de la etiqueta: "szipinf" y el texto: "Initializing inflate state" de Logcat
- BaseLayerAndroid creando mensajes de registro de destrucción
- Cómo configurar java.util.logging.logger en android para utilizar un archivo de propiedades de registro situado en la tarjeta SD?
Puedo combinar algunos de ellos, por ejemplo, usar el android de Log4J, pero crear un appender para usar el framework androlog, pero tarde o temprano será un desastre, que debe evitarse.
Gracias por sus sugerencias, espero que los resultados ayuden a decidir otros en el futuro.
Edit: Como se menciona a continuación, puedo combinar por ejemplo: log4j-android con slf4j (whitch prefiero hacer si voy a utilizar log4j, porque el formato de registro de apoyo ("{}", …)), pero lo hace No contesta la pregunta. Tengo que elegir un marco, entonces puedo decorarlo con la fachada SLF4J.
- Android: el método i (String, String) no está definido para el tipo Log
- ¿Cómo puedo desactivar el registro interno de Android para etiquetas específicas (por ejemplo, AbsListView, GestureDetector, endeffect)
- Mejor registrador de Android para iniciar sesión en el archivo
- Android: graba audio que se está reproduciendo desde el dispositivo a la toma de auriculares
- Registro de valores de variables en ndk nativo de Android
- Disminuir la verbosidad del registro interno de ORMlite o deshabilitarla
- ¿Por qué no debería usar System.out.println () en android
- ¿Por qué Logcat se llama LogCAT?
La mejor manera. Creo, es usar SLF4J API + parte de su implementación.
Para aplicaciones de Android, puede utilizar lo siguiente:
- Android Logger es la implementación de SLF4J ligera pero fácil de configurar (<50 Kb).
- LOGBack es la implementación más potente y optimizada, pero su tamaño es de aproximadamente 1 Mb.
- Cualquier otro de su gusto: slf4jandroid , slf4j-android .
Por favor, compruebe esta primera respuesta
Dice:
SLF4J es básicamente una capa de abstracción. No es una implementación de registro. Esto significa que si está escribiendo una biblioteca y usa SLF4J, puede darle esa biblioteca a otra persona para que use y puede elegir qué implementación de registro usar con SLF4J, por ejemplo, log4j o la API de registro de Java. Ayuda a evitar que los proyectos dependan de muchas API de registro sólo porque utilizan bibliotecas que dependen de ellas.
Por lo tanto, para resumir: SLF4J no reemplaza log4j, que trabajan juntos. Elimina la dependencia de log4j de tu biblioteca / aplicación.
He intentado original slf4j.org-android pero desafortunadamente este tarro no pudo conseguir los mensajes de la depuración / detallados para ser registrado porque utiliza internamente LOG.isDebugEnabled () para la salida de la depuración que parece siempre ser falsa.
Actualmente uso la implementación alternativa de lp0-slf4j-android que utiliza un archivo de propiedades con la configuración de registro donde también puedo obtener mensajes de depuración / verbose si están habilitados.