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
559 visualizaciones desde el 22 de Enero del 2019
279,3 KB
28 paginas
Creado hace 11a (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...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad