entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Cual es la mejor forma de hacer un log

Buenos dias, Necesito que algún experto en el tema me asesore con la creación de un log, recien comence a atilizar log4j,
pero no estoy muy seguro de si colocar siempre

try{
...
}
catch (Exception e) {
 logger.error("se ha presentado un error"+e.getMessage());
}

sin decir que tipo de error es ni nada de eso, ademas de esto ¡como seria el tratamiento con los warning?
debido a que supongo que el sistema no alerta por warnings, soy yo quien debe hacerlos o ¿estoy equivocado?
de antemano gracias por sus respuestas.

2 Respuestas

2votos

gtux Puntos500

Hola, desde mi humilde opinión la respuesta a tu pregunta es: sí, tienes que poner la línea de log en cada punto donde necesites guardar un log. Ahora, yo te recomiendo que uses los diferentes niveles de log como son: DEBUG, INFO, CRITICAL, etc. Con ello en mente puedes poner todas las líneas que te sean necesarias para tu aplicación, o las que te sientas a gusto, siempre identificándolos por nivel de severidad. Sin embargo, lo que sí debes hacer es configurar el logger para que guarde en archivo según algún filtro de severidad.

Cuando estás empezando a desarrollar tu aplicación, es muy común depurarla mucho, el filtro del logger puede ser desde nivel DEBUG, es decir, en algún archivo de log (asumiendo que allí lo guardas) verás todo tipo de log que haya sucedido. Esto es útil para encontrar problemas y/o verificar que todo está funcionando tal como debe. Luego que ya sigues madurando la aplicación debes ir subiendo el nivel de filtro, ya no a nivel de DEBUG sino a WARNING quizá, porque ya sabes que casi todo está funcionando bien, o tu código es suficientemente robusto y no querrás mover o mirar cientos de líneas para encontrar un error que realmente te valga la pena. En nivel producción ya podrías configurar el logger para que filtre los logs a partir de nivel CRITICAL quizá.

Como vez, todo es un poco de ir adecuándote tú mismo a tus propias necesidades y/o las del proyecto, no hay una receta exacta para tu pregunta.

Espero te ayude.

0voto

oscar7685 comentado

yo queria algo asi como unas buenas practicas para realizar un log, sin embargo es muy valiosa tu respuesta, Muchas gracias.

2votos

EdwinPdP Puntos240

Adicional de la respuesta de GTUX es importante que tengas encuenta que hoy día mucha inyección de código en las aplicaciones expuestas a la web.
Por la cual los LOG's son importante cuando depuración o correcion a un error se trata.
Si estos son vulnerados dando LOG's irreales o inclusive manipulando el mensaje del LOG, esto hace que termines buscando un error en el lugar equiviocado.
Podrías ver buenas practicas de LOG e incluso para todo tu código en las normas OWASP https://www.owasp.org/index.php/Main_Page

Vamos al ejemplo:
1-Mala practica

try{

}catch(Exception e){

   logger.error("Error al guardar persona"+parametro);
}

Asumamos que inyectan código por cualquier método y alteran el parametro recibido poniendo información irreal.

2-Buena Practica

try{
....
}catch(Exception e){
      LOGGER.log(Level.SEVERE, "La persona {0} con CI {1} presenta problema en {2}",                                     new Object[] {param 0,param1,param2 });

De esta manera tiene definidos los parametros de log y evitas concatenar cualquier valor o a su vez que mediante inyección de código inyecten valores irreales.
}

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta