Estoy escribiendo una biblioteca que reúne varias funciones que voy a utilizar en diferentes aplicaciones. Quiero que genere declaraciones de registro visibles para el usuario de la biblioteca, es decir, si estoy creando una aplicación y estoy usando la biblioteca, quiero que la biblioteca genere declaraciones de registro visibles para mí. ¿Cómo puedo hacer eso? Dado que el desarrollador de la aplicación configurará el archivo de registro, ¿cómo sabrá la biblioteca cómo iniciar sesión?Logger for Java library
Respuesta
Si está desarrollando una bibliotecalos demás incluirán en su aplicación se debe utilizar un registro fachada. De lo contrario, obligará a los usuarios de su biblioteca a configurar e incluir el marco de registro que haya elegido además del marco que eligieron para su aplicación.
Por ejemplo, si usted utiliza log4j pero el desarrollador usando su biblioteca utiliza logback tendrá que incluir un archivo de configuración de log4j y el tarro de log4j (o tomar other measures) para hacer feliz a su biblioteca.
Fachadas de registro resolver este problema (de Apache Commons Registro):
Al escribir una biblioteca es muy útil para registrar información. Sin embargo, hay muchas implementaciones de registro, y una biblioteca no puede imponer el uso de una particular en la aplicación general de la que forma parte la biblioteca.
El paquete de registro es un puente ultradelgado entre diferentes implementaciones de registro. Una biblioteca que usa la API de registro de recursos comunes se puede usar con cualquier implementación de registro en tiempo de ejecución. El registro de Commons tiene soporte para varias implementaciones de registro populares, y adaptadores de escritura para otros es una tarea razonablemente simple.
O el razonamiento de SLF4J:
La fachada de registro simple para Java o (SLF4J) sirve como una fachada simple o abstracción para diversos marcos de registro, por ejemplo, java.util.logging, log4j y logback, lo que permite al usuario final conectar el marco de registro deseado en despliegue tiempo.
Los candidatos para fachadas de registro son:
Su ejemplo es engañoso. El desarrollador puede usar la API SLF4J para el adaptador de código y log4j para terceros al mismo tiempo. Luego simplemente selecciona un backend SLF4J como logback. De hecho, esta es una razón para SLF4J, es tan simple. No es necesaria la configuración de log4j. –
@RostislavMatl ¿Estás hablando de SLF4J "módulos puente" (http://www.slf4j.org/legacy.html)? Esto le permite usar una biblioteca que usa log4j, ... internamente y redirigir sus mensajes de registro a SLF4J (que puede estar respaldado por logback). Esta es sin duda una gran característica si usted es el USUARIO de una biblioteca. Sin embargo, cuando usted es el DESARROLLADOR de una biblioteca, ¿por qué debería obligar a sus usuarios a pasar por tales aros? ¿Por qué no usar una fachada directamente? Como la página SLF4J indica que estas soluciones son "apropiadas para software que escapa a su control". Por favor corrígeme si te he entendido mal. – Joe23
Aparentemente hablamos de cosas diferentes. Usted escribió: "si usa log4j pero el desarrollador que usa su biblioteca usa logback tendrá que incluir una configuración de log4j", eso no es verdad. Y es una mala solución al mismo tiempo. No te dije que no puedes usar SLF4J mientras desarrollas un nuevo código. Elegí el punto o vista del usuario de la biblioteca porque con más frecuencia serás el usuario que el creador. –
Las soluciones estándar para esto son:
- Log4J: http://logging.apache.org/log4j/
- SLF4J: http://www.slf4j.org/
- JDK incorporado Logger: https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html
Todos ellos permitirá configurar la ubicación del archivo de registro a través de la configuración.
- 1. Logger Library para iOS
- 2. BSON library for java?
- 3. building shared library for android
- 4. JavaScript Standard Library for V8
- 5. Creando logger logger programmatically
- 6. Ruby library/gem for game graphics?
- 7. Javascript gamification/logro library for mobile
- 8. Class :: DBI-like library for php?
- 9. Open-source OCR library for Arabic
- 10. Qt library for 2D/3D game development
- 11. Java Graphics library
- 12. Java SFTP Transfer Library
- 13. Java HTTP Server Library
- 14. Java CVS library
- 15. Java Clustering Library
- 16. java gis library
- 17. Java CSS spriting library
- 18. Java BBCode library
- 19. Comparar log4j y Logger
- 20. WITSML api library for .Net/C# client applications?
- 21. Software Synth Library para Java
- 22. SSH Java-library para Android?
- 23. PDF Generation Library para Java
- 24. JSON Beautifier Library para Java
- 25. Java Bytecode Manipulation Library Sugerencias
- 26. shlex alternative for Java
- 27. CSV API for Java
- 28. Configuración de Logger java para un paquete específico
- 29. Logger vs System.out.println
- 30. Bash Command Logger
Eche un vistazo al marco Spring. Específicamente, la capacidad de Inyección de Dependencia es la parte que le resulta más útil. – cdeszaq