una obtener mostrar llaves foraneas ejemplo desde datos consultar java logging

obtener - mostrar datos de una base de datos en java



Cómo usar niveles de registro en Java (8)

Aquí hay una buena introducción al registro en Java: http://www.javapractices.com/topic/TopicAction.do?Id=143

Java viene con una API de registro ya que es la versión 1.4.2: http://download.oracle.com/javase/1.4.2/docs/guide/util/logging/overview.html

También puede usar otros marcos de registro como Apache Log4j, que es el más popular: http://logging.apache.org/log4j

Le sugiero que use un marco de abstracción de registro que le permite cambiar su marco de registro sin volver a factorizar su código. Entonces puede comenzar utilizando Jul (Java Util Logging) y luego pasar a Log4j sin cambiar su código. La fachada de explotación forestal más popular es slf4j: http://www.slf4j.org/

Saludos,

Estoy desarrollando una aplicación donde necesito usar la funcionalidad del registrador. He leído sobre diferentes niveles de registrador que son:

  • SEVERO (más alto)
  • ADVERTENCIA
  • INFO
  • CONFIG
  • MULTA
  • FINER
  • MEJOR

No puedo entender el uso de cada nivel de registro.

¿Puede alguien darme un buen ejemplo que muestre todos los niveles de registro y su uso?


El uso de niveles es realmente tuyo. Debe decidir qué es grave en su aplicación, qué es una advertencia y qué es solo información. Es necesario dividir el registro para que los usuarios puedan configurar fácilmente un nivel de registro que no mate el sistema con un exceso de IO, pero que informará errores graves para que pueda solucionarlos.


En general, no necesita todos esos niveles, SEVERE, ADVERTENCIA, INFORMACIÓN, FINE podría ser suficiente. Estamos usando Log4J (no java.util.logging directamente) y los siguientes niveles (que pueden diferir en nombre de otros marcos de registro):

  • ERROR: Cualquier error / excepción que es o podría ser crítico. Nuestro registrador envía automáticamente un correo electrónico para cada mensaje en nuestros servidores (uso: logger.error("message"); )

  • ADVERTENCIA: Cualquier mensaje que pueda advertirnos de posibles problemas, por ejemplo, cuando un usuario intenta ingresar con credenciales incorrectas, lo que puede indicar un ataque si eso ocurre a menudo o en períodos cortos de tiempo (uso: logger.warn("message"); )

  • INFORMACIÓN: Cualquier cosa que deseamos saber cuando miramos los archivos de registro, por ejemplo, cuando un trabajo programado comenzó / finalizó (uso: logger.info("message"); )

  • DEPURACIÓN: como su nombre lo indica, depure los mensajes que raramente activamos. (uso: logger.debug("message"); )

Lo bueno de esto es que si establece el nivel de registro en ADVERTENCIA, los mensajes de información y depuración no tienen impacto en el rendimiento. Si necesita obtener información adicional de un sistema de producción, puede bajar el nivel a INFO o DEBUG por un período corto (ya que obtendrá muchas más entradas de registro que harán que sus archivos de registro sean más grandes y difíciles de leer). El ajuste de los niveles de registro, etc., normalmente se puede hacer en tiempo de ejecución (nuestra instancia de JBoss comprueba los cambios en esa configuración cada minuto más o menos).


Esos son los niveles. Consideraría la gravedad del mensaje que está registrando y usará los niveles adecuados.

Básicamente es una marca de agua; cuanto más alto sea el nivel, más probabilidades tendrá de conservar la información en la entrada del registro. El más fino sería para los mensajes que son de muy poca importancia, por lo que lo usaría para cosas que generalmente no le interesan pero que podría querer ver en algunas circunstancias excepcionales.


Este consejo muestra cómo usar Logger en cualquier aplicación Java. Logger necesita configurar el Formateador y el Manejador. Hay muchos tipos de manejadores y formateadores presentes. En este ejemplo, FileHandler se usa para almacenar todos los mensajes de registro en un archivo de registro. Y el formateador simple se utiliza para formatear los mensajes de registro en forma legible por humanos.

package MyProject; import java.io.IOException; import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; import java.util.logging.SimpleFormatter; public class MyLogger { public static void main(String[] args) { Logger logger = Logger.getLogger("MyLog"); FileHandler fh; try { // This block configure the logger with handler and formatter fh = new FileHandler("c://MyLogFile.log", true); logger.addHandler(fh); logger.setLevel(Level.ALL); SimpleFormatter formatter = new SimpleFormatter(); fh.setFormatter(formatter); // the following statement is used to log any messages logger.log(Level.WARNING,"My first log"); } catch (SecurityException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

algunos ejemplos más que puedes encontrar aquí https://docs.oracle.com/javase/7/docs/api/java/util/logging/Logger.html


Este extracto es de la siguiente publicación increíble .

ERROR - sucedió algo terriblemente malo, que debe investigarse de inmediato. Ningún sistema puede tolerar elementos registrados en este nivel. Ejemplo: NPE, la base de datos no está disponible, el caso de uso de misión crítica no puede continuarse.

ADVERTENCIA: el proceso puede continuarse, pero tenga especial cuidado. En realidad, siempre quise tener dos niveles aquí: uno para problemas obvios donde existe solución alternativa (por ejemplo: "Datos actuales no disponibles, usando valores en caché") y segundo (asígnele el nombre: ATENCIÓN) para posibles problemas y sugerencias. Ejemplo: "Aplicación ejecutándose en modo de desarrollo" o "La consola de administración no está protegida con una contraseña". La aplicación puede tolerar mensajes de advertencia, pero siempre deben justificarse y examinarse.

INFORMACIÓN - El proceso comercial importante ha terminado. En un mundo ideal, el administrador o usuario avanzado debería ser capaz de comprender los mensajes INFO y descubrir rápidamente qué está haciendo la aplicación. Por ejemplo, si una aplicación tiene que ver con la reserva de boletos de avión, debe haber solo una declaración INFO por cada boleto que diga "[Quién] reservó el boleto de [Donde] a [Dónde]". Otra definición de mensaje INFO: cada acción que cambia significativamente el estado de la aplicación (actualización de la base de datos, solicitud externa del sistema).

DEBUG - Desarrolladores. Más adelante discutiré qué tipo de información merece ser registrada.

TRACE - Información muy detallada, destinada solo para el desarrollo. Puede conservar mensajes de seguimiento durante un breve período de tiempo después de la implementación en el entorno de producción, pero trate estas instrucciones de registro como temporales, que deberían o podrían apagarse con el tiempo. La distinción entre DEPURACIÓN y RASTREO es la más difícil, pero si coloca la declaración de registro y la elimina después de que la característica se haya desarrollado y probado, probablemente debería estar en el nivel RASTREO.

PD: lee TRACE como VERBOSE


La documentación de java.util.logging.Level hace un buen trabajo al definir cuándo usar un nivel de registro y la audiencia objetivo de ese nivel de registro.

La mayor parte de la confusión con java.util.logging está en los métodos de rastreo. Debería estar en la documentación del nivel de clase, pero en su lugar, el campo Level.FINE proporciona una buena descripción general:

FINE es un nivel de mensaje que proporciona información de seguimiento.

Todo FINE, FINER y FINEST están destinados a un seguimiento relativamente detallado. El significado exacto de los tres niveles variará entre subsistemas, pero en general, se debe usar FINEST para obtener el resultado detallado más voluminoso, FINER para obtener un resultado algo menos detallado y FINE para los mensajes de menor volumen (y más importante).

En general, el nivel FINE debe usarse para obtener información que sea ampliamente interesante para los desarrolladores que no tienen un interés especializado en el subsistema específico.

Los mensajes FINE pueden incluir cosas como fallas menores (recuperables). Los problemas que indican posibles problemas de rendimiento también merecen iniciar sesión como FINE.

Una cosa importante de entender que no se menciona en la documentación de nivel es que la información de rastreo del sitio de llamada se registra en FINER . Si registra un mensaje como FINE , podrá configurar el sistema de registro para ver el resultado del registro con o sin registros de control de flujo que rodean el mensaje de registro. Por lo tanto, use FINE solo cuando los registros de control de flujo no sean necesarios como contexto para comprender este mensaje de seguimiento de registro.

FINER indica un mensaje de seguimiento bastante detallado. Por defecto, las llamadas de inicio de sesión para ingresar, regresar o lanzar una excepción se rastrean en este nivel.

En general, la mayor parte del uso de FINER debe dejarse a la llamada de entering , exiting y throwing . En su mayor parte, se reservará FINER para el seguimiento del sitio de llamada cuando se active el registro detallado.

FINEST indica un mensaje de seguimiento muy detallado.

Utilice FINEST cuando el mensaje de registro de seguimiento que está por escribir requiera información contextual sobre el flujo de control del programa. También debe usar FINEST para rastrear mensajes que producen grandes cantidades de datos de salida.

CONFIG mensajes CONFIG están destinados a proporcionar una variedad de información de configuración estática, para ayudar en la depuración de problemas que pueden estar asociados con configuraciones particulares. Por ejemplo, el mensaje CONFIG podría incluir el tipo de CPU, la profundidad de los gráficos, el aspecto y la interfaz gráfica de usuario, etc.

CONFIG funciona bien para ayudar a los administradores del sistema con los elementos enumerados anteriormente.

Normalmente, los mensajes INFO se escribirán en la consola o su equivalente. Por lo tanto, el nivel INFO solo debe usarse para mensajes razonablemente significativos que tengan sentido para los usuarios finales y los administradores del sistema.

Ejemplos de esto son el inicio y el apagado del programa de rastreo.

En general, los mensajes de WARNING deben describir los eventos que serán de interés para los usuarios finales o los administradores del sistema, o que indiquen problemas potenciales.

Un caso de uso de ejemplo podría ser excepciones lanzadas desde implementaciones de AutoCloseable.close .

En general, los mensajes SEVERE deben describir eventos que son de considerable importancia y que evitarán la ejecución normal del programa. Deben ser razonablemente inteligibles para los usuarios finales y para los administradores del sistema.

Por ejemplo, si tiene una transacción en su programa donde si alguno de los pasos falla, entonces todos los pasos anulados entonces SEVERE sería apropiado para usar como el nivel de registro.


los diferentes niveles de registro son útiles para las herramientas, que pueden analizar los archivos de registro. Normalmente, un archivo de registro contiene mucha información. Para evitar una sobrecarga de información (o aquí un ^^) puede usar los niveles de registro para agrupar la información.