PDF de programación - Sesión 6: Depuración y logs - Java Avanzado

Imágen de pdf Sesión 6: Depuración y logs - Java Avanzado

Sesión 6: Depuración y logs - Java Avanzadográfica de visualizaciones

Publicado el 22 de Enero del 2019
148 visualizaciones desde el 22 de Enero del 2019
279,3 KB
28 paginas
Creado hace 7a (26/09/2012)
Experto Universitario Java Enterprise

Lenguaje Java Avanzado

Sesión 6: Depuración y logs

© 2012-2013 Depto. Ciencia de la Computación e IA



Experto Universitario Java Enterprise

Puntos a tratar

• El depurador de Eclipse
• Gestión de logs con Log4Java
• La librería commons-logging

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 2



Experto Universitario Java Enterprise

El depurador de Eclipse

• Eclipse incorpora un depurador que permite inspeccionar cómo funciona nuestro



código
Incorpora varias funcionalidades:
• Establecimiento de breakpoints
• Consulta de valores de variables en cualquier momento
• Consulta de valores de expresiones complejas
• Parada/Reanudación de hilos de ejecución

• Existe también la posibilidad de depurar otros lenguajes (C/C++), instalando los

plugins adecuados

• Desde Java 1.4 permite cambiar código “en caliente” y seguir con la depuración

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 3



Experto Universitario Java Enterprise

Depurar un proyecto

• Ejecutamos la aplicación con Debug As
• Normalmente al depurar pasamos a la perspectiva de depuración
• Si no es así, vamos a Window – Open Perspective – Debug
• Vemos los hilos que se ejecutan, los breakpoints establecidos, las

variables que entran en juego... etc

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 4



Experto Universitario Java Enterprise

Establecer breakpoints

• Un breakpoint es un punto donde la ejecución del programa se detiene para

examinar su estado

• Para establecerlos, hacemos doble click en el margen izquierdo de la línea

donde queremos ponerlo

• Luego arrancamos
el programa desde
Run - Debug

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 5



Experto Universitario Java Enterprise

Breakpoints condicionales

• Se disparan sólo cuando se cumple

una determinada condición

• Se establecen con el botón derecho

sobre el breakpoint, eligiendo
Breakpoint Properties

• Colocamos la condición en Enable

Condition

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 6



Experto Universitario Java Enterprise

Evaluar expresiones
• Podemos ver el valor de una expresión compleja seleccionándola (durante una

parada por breakpoint) y eligiendo con el botón derecho Inspect

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 7



Experto Universitario Java Enterprise

Explorar variables
• Si queremos ver qué valores va tomando una variable paso a paso, una
vez alcanzado un breakpoint vamos a Run y vamos dándole a Step Over
o F6

• También podemos, en el cuadro de variables, pinchar sobre una y

cambiar su valor

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 8



Experto Universitario Java Enterprise

Introducción a Log4J

• Log4Java (Log4J) es una librería open source que permite controlar la

salida de los mensajes que generen nuestros programas

• Tiene diferentes niveles de mensajes, que se permiten monitorizar con

cierta granularidad

• Es configurable en tiempo de ejecución
• Más información en:

• http://www.jakarta.apache.org/log4j

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 9



Experto Universitario Java Enterprise

Estructura de Log4J

• El funcionamiento de Log4J se basa en 3 elementos:

• Loggers: entidades asociadas a paquetes o clases, que recogen los mensajes que

dichos paquetes o clases generan
• Se estructuran en forma de árbol, partiendo de un logger raíz que existe

siempre

• Appenders: indican la salida por la que se muestran los mensajes de los loggers

(por pantalla, a un fichero... etc)

• Layouts: indican el formato que va a tener el mensaje al mostrarse (fecha, tipo de

mensaje, prioridad... etc)

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 10



Experto Universitario Java Enterprise

Loggers
• Se tienen 5 tipos (niveles) de mensajes de log:

• DEBUG: mensajes de depuración
• INFO: información acerca del programa (versión, etc)
• WARN: alerta sobre situaciones que no afectan al correcto funcionamiento
• ERROR: errores que afectan al funcionamiento correcto del programa, pero

que le permiten continuar

• FATAL: para mensajes críticos que terminan el programa

• Los loggers recogen los mensajes de algunos o todos estos niveles sobre una

clase o conjunto de clases

• Hay dos niveles más, ALL y OFF, para recoger todos los niveles o ninguno

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 11



Experto Universitario Java Enterprise

Asociar loggers con clases
• Colocamos un objeto org.apache.log4j.Logger en la clase de la que

queramos captar sus mensajes

• Luego llamamos a los métodos del logger para generar mensajes de uno

u otro nivel:
• debug (String mensaje)
• info (String mensaje)
• warn (String mensaje)
• error (String mensaje)
• fatal (String mensaje)

• Se puede configurar qué niveles recoger

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 12



Experto Universitario Java Enterprise

Asociar loggers con clases

• Un ejemplo:

import org.apache.log4j.*;
public class MiClase
{

static Logger logger = Logger.getLogger(MiClase.class);
...
public static void main (String[] args)
{

logger.info (“Entrando en la aplicación”);
...
logger.warn (“Esto es una advertencia”);
...
logger.fatal (“Error fatal”);

}

}

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 13



Experto Universitario Java Enterprise

Appenders
• Permiten indicar dónde van a ir los mensajes de log
• Todos son clases del paquete org.apache.log4j

• ConsoleAppender: para dirigir los mensajes a pantalla

• Threshold=WARN
• ImmediateFlush=true
• Target=System.err

// Nivel mínimo

// No buffering
// Tipo de salida

• FileAppender: para dirigir los logs a un fichero

• Threshold=WARN
• ImmediateFlush=true
• File=logs.txt
• Append=false

// Nombre del fichero
// Sobreescritura

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 14



Experto Universitario Java Enterprise

Appenders
• RollingFileAppender: para dirigir los logs a un fichero, que se permite rotar

• Threshold=WARN
• ImmediateFlush=true
• File=logs.txt
• Append=false
• MaxFileSize=1MB
• MaxBackupIndex=2

// Tamaño máximo (KB|MB|GB)
// Ficheros antiguos a guardar

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 15



Experto Universitario Java Enterprise

Otros appenders

• JDBCAppender: para dirigir los logs a una base de datos JDBC
• SocketAppender: redirecciona los mensajes a un servidor remoto
• SMTPAppender: envía un e-mail con los mensajes de log que se le

indiquen

• SyslogAppender: envía los logs al demonio syslog de Unix
• ... etc
• Más adelante veremos cómo establecerlos y configurarlos

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 16



Experto Universitario Java Enterprise

Layouts

• Indican el formato de salida de los mensajes de log
• Todos son clases del paquete org.apache.log4j

• SimpleLayout: prioridad del mensaje, y texto del mismo
• DEBUG – Hola, esto es un mensaje
• PatternLayout: admite marcas %x para mostrar las partes que nos

interesen:
• %d: fecha del mensaje (%d{dd/MM/yy HH:mm:ss})
• %m: texto del mensaje
• %n: salto de línea en la salida
• %p: prioridad del evento de log
• ... etc

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 17



Experto Universitario Java Enterprise

Otros layouts

• HTMLLayout: la salida la vuelca a una tabla HTML
• XMLLayout: saca la salida a un fichero XML compatible con la DTD de Log4J

(log4j.dtd)

• TTCCLayout: saca algunos elementos predefinidos, como fecha, hilo de

ejecución, categoría del log y NDC (Nested Diagnostic Context) del evento de
log.

• ... etc

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 18



Experto Universitario Java Enterprise

Configurar Log4J
• Una vez hemos incluído el Logger en nuestras clases Java que queramos

gestionar, basta con configurar la clase principal

• La configuración por defecto la tenemos con el método

BasicConfigurator.configure( )

import org.apache.log4j.*;
public class MiClase {

static Logger logger = ...;
...
public static void main(String[] args) {

BasicConfigurator.configure();
...
logger.warn(“...”);
...

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 19



Experto Universitario Java Enterprise

Otras configuraciones
• Podemos configurar Log4J con otras opciones, desde ficheros de propiedades (con

PropertyConfigurator), o desde ficheros XML (con DOMConfigurator)

import org.apache.log4j.*;
public class MiClase {

static Logger logger = ...;
...
public static void main(String[] args) {

PropertyConfigurator.configure(String fichero);
DOMConfigurator.configure(String fichero);
...

• Se tienen los métodos configureAndWatch(...) en uno y otro, para revisar si la

configuración cambia en tiempo de ejecución

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Depuración y logs - 20



Experto Universitario Java Enterprise

Ejemplo de fichero de propiedades
# Coloca el nivel root del logger en DEBUG (muestra mensajes de DEBUG hacia arriba)
# Añade dos appenders, llamados A1 y A2
log4j.rootLogger=DEBUG, A1, A2

# A1 se redirige a la consola
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 utiliza PatternLayout
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.
  • Links de descarga
http://lwp-l.com/pdf14938

Comentarios de: Sesión 6: Depuración y logs - Java Avanzado (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad