Simple Logging Facade for Java (SLF4J) sirve como una fachada o abstracción para el framework de logueo utilizado. (java.util.logging, logback, log4j) permitiendo al usuario final conectar el framework deseado en tiempo de despliegue.
Log4j, es una librería para logueo en Java.
En este post veremos como habilitar el logueo en aplicaciones REST desplegadas en Glassfish 4.0 utilizando SLF4J y el framework Log4J. Pasos:
incluir las dependencias
Incluir la dependencia para SLF4J.
dependencies { providedCompile ( ['javax.ws.rs:javax.ws.rs-api:2.0.1'], ['org.glassfish.jersey.containers:jersey-container-servlet:2.13'], ['com.sun.jersey:jersey-server:1.18.1'], ['org.eclipse.persistence:org.eclipse.persistence.jpa:2.5.2'] ) compile(['org.slf4j:slf4j-log4j12:1.7.10']) runtime files(['libs/ojdbc7.jar'],['libs/ojdbc14.jar']) testCompile 'junit:junit:4.11', 'org.mockito:mockito-core:1.10.8' }
La dependencia antes descrita descarga tanto SLF4J como Log4J.
Agregar archivo lo4j.properties a glassfish
- Crear log4j.properties
Crear el archivo log4j.properties con el siguiente contenido:
# Root logger option log4j.rootLogger=DEBUG, file # Redireccionar el log de mensajes a un archivo log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=${com.sun.aas.instanceRoot}/logs/archivo.log log4j.appender.file.Append = true log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Colocar el archivo antes creado en /Applications/glassfish4/glassfish/domains/domain1/config
colocar el jar log4j en el directorio glassfish/lib de glassfish
Agregar la siguiente opción de la máquina virtual de java al servidor
-Dlog4j.configuration=file:///${com.sun.aas.instanceRoot}/config/log4j.properties
Para realizarlo abrir la consola de glassfish —> Configurations —> server-config —> JVM Settings —> Jvm options
Click en save
Restart glassfish
Utilizar sentencias proporcionadas por el API
import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Implementación del consumo del catálogo x obteniendo la información * desde x repositorio. * * @author Clemente Morales Fernández * @since Jan 12, 2025 * */ public class CatalogoImpl implements CatalogoSexo { /** * Logueo de eventos de la aplicación. */ final Logger log = LoggerFactory.getLogger(CatalogoImpl.class); @Override public ListgetSexos() { String catalogo = getCatalogoDesdeRepositorio(); log.info(String.format("Catalogo obtenido desde repositorio x. %s", catalogo)); return CatalogoConverter.toTransferObject(catalogo); } /** * Permite obtener el catálogo desde el repositorio. * * @return Catálogo ... */ private String getCatalogoDesdeRepositorio() { String catalogo = ""; try { catalogo = obtenerCatalogo(); } catch (Exception exception) { log.error("Error obteniendo el catálogo x. ", exception); } return catalogo; } }
No hay comentarios:
Publicar un comentario