December 04, 2012

JPA + Logger slf4j

Objetivo:


   Entender e implementar el sistema de logging para los SQL de JPA en projectos Java.


Herramientas:

Introducción:


   SLF4J como lo dice su nombre en inglés es una fachada (facade) que estandariza el formato de hacer logging (mensaje que entregan información a los desarrolladores), para poder intercambiar entre distintos tipos de implementaciones sin tener que realizar cambios en el código.


Configuración:

1.-   Añadir el paquete slf4j-log4j12 en el classpath. En particular, yo lo he hecho con maven.



Lo anterior agrega las dependencias slf4j-apilog4j


2.- Configurar persistence.xml y log4j.xml

persistence.xml:




En el cógigo anterior se listan los niveles de logging que existen en eclipselink. Luego, se define el nivel de "log" en FINE y finalmente se indica que "logger" se utilizará. En particular, indican 3 posibles alternativas.

3.- Finalmente, se debe implementar las clases que conectará el logger que se deseea utilizar con eclipselink. Por ejemplo, yo utilizé una creada por lukas

package cl.molavec.punto.db.eclipselink;

import org.eclipse.persistence.logging.AbstractSessionLog;
import org.eclipse.persistence.logging.SessionLog;
import org.eclipse.persistence.logging.SessionLogEntry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class CustomSessionLogger extends AbstractSessionLog implements SessionLog {
 public static final Logger LOG = LoggerFactory.getLogger(CustomSessionLogger.class);
 public void log(SessionLogEntry sessionLogEntry) {
  switch (sessionLogEntry.getLevel()) {
   case SEVERE:
    LOG.error(sessionLogEntry.getMessage());
    break;
   case WARNING:
    LOG.warn(sessionLogEntry.getMessage());
    break;
   case INFO:
    LOG.info(sessionLogEntry.getMessage());
    break;
   case FINE:
    LOG.info(sessionLogEntry.getMessage());
    break;
   default:
    LOG.debug(sessionLogEntry.getMessage());
         }
 }
}





aunque también es posible utilizar otras como las que se ofrecen en el tutorial para usar log4j con eclipselink.
| The End |

No comments:

Post a Comment