[Java] Manejo de excepciones usando JDK Logging

Usar registro JDK

En el proceso de escritura del programa, se encuentra que el resultado de la ejecución del programa no es el esperado, ¿qué debo hacer? Por supuesto, es System.out.println()imprimir algunas variables en el proceso de ejecución, observar si el resultado de cada paso es consistente con la lógica del código y luego modificar el código de manera específica.

¿Qué debo hacer si se cambia el código? Por supuesto, elimine la System.out.println()declaración inútil.

¿Qué pasa si se cambia el código y se cambia el problema? Además System.out.println()_

Después de hacer esto varias veces, todos pronto descubrieron que usar S ystem.out.println()es muy problemático.

¿qué hacer?

La solución es usar registros.

Entonces, ¿qué es un registro? El registro es Logging, y su propósito es reemplazar System.out.println().

La salida de registros, en lugar de utilizarlos System.out.println(), tiene las siguientes ventajas:

Puede configurar el estilo de salida para evitar escribir "ERROR: " + var cada vez;
puede configurar el nivel de salida para prohibir ciertos niveles de salida. Por ejemplo, solo se genera el registro de errores;
se puede redirigir a un archivo, de modo que el registro se pueda ver después de que se ejecute el programa; el
nivel del registro se puede controlar mediante el nombre del paquete y solo se puede controlar el registro de ciertos paquetes. salida ; sí
...
En resumen, son muchos los beneficios.

Entonces, ¿cómo usar el registro?

Debido a que la biblioteca estándar de Java tiene un paquete de registro incorporado java.util.logging, podemos usarlo directamente. Veamos un ejemplo sencillo:

// logging
import java.util.logging.Level;
import java.util.logging.Logger;
public class Hello {
    
    
    public static void main(String[] args) {
    
    
        Logger logger = Logger.getGlobal();
        logger.info("start process...");
        logger.warning("memory is running out...");
        logger.fine("ignored.");
        logger.severe("process will be terminated...");
    }
}

Ejecute el código anterior y obtenga un resultado similar al siguiente:

Mar 02, 2019 6:32:13 PM Hello main
INFO: start process...
Mar 02, 2019 6:32:13 PM Hello main
WARNING: memory is running out...
Mar 02, 2019 6:32:13 PM Hello main
SEVERE: process will be terminated...

De la comparación se puede ver que la mayor ventaja de usar el registro es que imprime automáticamente mucha información útil, como la hora, la clase de llamada y el método de llamada.

Después de una cuidadosa observación, se encontró que de los 4 registros, solo se imprimieron 3, pero logger.fine()no se imprimió ninguno. Esto se debe a que se puede configurar el nivel de salida del registro. El registro de JDK define 7 niveles de registro, de grave a normal:

SEVERE
WARNING
INFO
CONFIG
FINE
FINER
FINEST

Debido a que el nivel predeterminado es INFO, los registros por debajo del nivel de INFO no se imprimirán. La ventaja de usar el nivel de registro es que al ajustar el nivel, se puede bloquear una gran cantidad de resultados de registro relacionados con la depuración.

El uso de la biblioteca estándar de Java incorporada Loggingtiene las siguientes limitaciones:

LoggingEl sistema lee el archivo de configuración y completa la inicialización cuando se inicia la JVM Una vez que el método main() comienza a ejecutarse, la configuración no se puede modificar;

La configuración no es muy conveniente y los parámetros deben pasarse cuando se inicia la JVM -Djava.util.logging.config.file=<config-file-name>.

Por lo tanto, el uso integrado en la biblioteca estándar de Java Loggingno es muy extenso. Más adelante se presentará un sistema de registro más conveniente.

resumen

El registro es para reemplazo System.out.println(), puede definir el formato, redirigir a un archivo, etc.;

Los registros se pueden archivar para facilitar el seguimiento de problemas;

El registro se puede clasificar por nivel, lo que facilita activar o desactivar ciertos niveles;

El registro se puede ajustar de acuerdo con el archivo de configuración sin modificar el código;

La biblioteca estándar de Java proporciona java.util.loggingfuncionalidad de registro.

Supongo que te gusta

Origin blog.csdn.net/ihero/article/details/132190860
Recomendado
Clasificación