studio programacion herramientas fundamentos con avanzado aplicaciones android logging log4j slf4j

programacion - ¿Qué marco de registro de Android usar?



manual de android en pdf (3)

He intentado con slf4j.org-android original pero, desafortunadamente, este jar no ha podido registrar los mensajes de depuración / verbose porque internamente usa LOG.isDebugEnabled () para la salida de depuración que siempre parece ser falsa.

actualmente utilizo la lp0-slf4j-android alternativa lp0-slf4j-android que utiliza un archivo de propiedades con la configuración de registro donde también puedo obtener mensajes de depurar / verbosos si están habilitados.

Mi pregunta parece ser fácil de responder, pero hay varias buenas soluciones. Me gusta elegir el "mejor".

Marcos disponibles (no dude en sugerir más):

Pros contras:

Androlog:

  • Pro: similar al marco de registro de Android, por lo que solo hay pequeños cambios en el código existente; Capaz de enviar informes de fallas con más detalles en el informe de errores (los registros alrededor de la excepción); Buenos registros
  • Con: No hay un enfoque estándar de Java "getLogger"; Configuración de producción que se puede lograr cargando el archivo de propiedad a la tarjeta sd; Necesito llamar al inicio de sesión manualmente; Necesita crear constantes como LOG_TAG, o hackearlas 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 comercial, debemos probarlo. Probar llamadas estáticas en Android es casi imposible; Logger no puede ser inyectado por framework

Log4J-Android:

  • Pro: forma estándar de iniciar sesión en Java; Compatible con SLF4J; Capaz de analizar los archivos de propiedad;
  • Con: Sin sistema incorporado de informe de fallas; Me parece a mí: no se usa comúnmente, así que podría ser peligroso usarlo;

SLF4J-Android:

  • Pro: parece ser desarrollado por más personas como Log4J-Android; logger.debug("Some log message. Details: {}", someObject.toString()); es una forma buena y efectiva de saltear concatenaciones de cadenas si el registrador está apagado; ligero enlace logger que delega a android.util.Log .
  • Con: Etiquetas de registro generadas automáticamente que tienen <= 23 caracteres de longitud debido a una restricción de longitud de las etiquetas de registro en la plataforma Android (por ejemplo, la etiqueta com.example.myapp.MyClass traducida a c*.e*.m*.MyClass ), que puede dar como resultado la misma etiqueta de registro para diferentes clases (p. ej., com.example.app.MyClass y com.example.anotherapp.MyClass traducen en c*.e*.a*.MyClass ); Sin sistema integrado de informes de fallas.

Además de estos, me gusta el comportamiento de Androlog, pero soy un desarrollador de Java, estoy familiarizado con log4j / slf4j. Definitivamente necesitaremos un sistema de informe de fallos, pero hay varios marcos para informes de fallos (además del informe de fallas predeterminado de Android).

Puedo combinar algunos de ellos, por ejemplo, usar Log4J android, pero crear un appender para usar el framework androlog, pero tarde o temprano será un desastre, lo cual debería evitarse.

Gracias por sus sugerencias, espero que los resultados ayuden a decidir a otros en el futuro.

Editar: como se menciona a continuación, puedo combinar por ejemplo: log4j-android con slf4j (lo que prefiero hacer si uso log4j, porque el soporte de formato de registro ("{}", ...)), pero lo hace no responde la pregunta. Tengo que elegir un marco, luego puedo decorarlo con la fachada SLF4J.


La mejor manera. Creo que es utilizar SLF4J API + parte de su implementación.

Para aplicaciones de Android puede usar lo siguiente:

  1. Android Logger es la implementación SLF4J ligera pero fácil de configurar (<50 Kb).
  2. LOGBack es la implementación más potente y optimizada, pero su tamaño es de aproximadamente 1 Mb.
  3. Cualquier otro por su gusto: slf4jandroid , slf4j-android .

Por favor verifique this primera respuesta

Dice:

SLF4J es básicamente una capa de abstracción. No es una implementación de registro. Significa que si está escribiendo una biblioteca y usa SLF4J, puede darle esa biblioteca a otra persona para que la 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 simplemente porque usan bibliotecas que dependen de ellos.

Entonces, para resumir: SLF4J no reemplaza a log4j, trabajan juntos. Elimina la dependencia de log4j de tu biblioteca / aplicación.