[Java] Manejo de excepciones usando Commons Logging

Uso del registro común

A diferencia del registro proporcionado por la biblioteca estándar de Java Commons Logging, es una biblioteca de registro de terceros, que es Apacheun módulo de registro creado por

Commons LoggingLa característica es que puede montar diferentes sistemas de registro y especificar el sistema de registro montado a través del archivo de configuración. De manera predeterminada, Commons Logginbusca y usa automáticamente Log4j( Log4jes otro sistema de registro popular) y Log4jusa si no se encuentra JDK Logging.

El uso Commons Loggingsolo necesita tratar con dos clases y solo dos pasos:

El primer paso es LogFactoryobtener Logla instancia de la clase; el segundo paso es usar Logel método de la instancia para iniciar sesión.

El código de ejemplo es el siguiente:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Log log = LogFactory.getLog(Main.class);
        log.info("start...");
        log.warn("end.");
    }
}

Al ejecutar el código anterior, definitivamente obtendrá un error de compilación, similar error: package org.apache.commons.logging does not exist(no se puede encontrar el paquete org.apache.commons.logging). Debido a Commons Loggingque es una biblioteca proporcionada por un tercero, debe descargarse primero. Después de descargar, descomprima, busque 到commons-logging-1.2.jareste archivo y coloque el código fuente de Java Main.javaen un directorio, como workel directorio:

work
│
├─ commons-logging-1.2.jar
│
└─ Main.java

Luego compile Main.java con javac y especifique el classpath al compilar; de lo contrario, el compilador no puede encontrar el paquete al que hacemos referencia org.apache.commons.logging. El comando de compilación es el siguiente:

javac -cp commons-logging-1.2.jar Main.java `
Si la compilación es exitosa, habrá un archivo Main.class adicional en el directorio actual:

work
│
├─ commons-logging-1.2.jar
│
├─ Main.java
│
└─ Main.class

Ahora puede ejecutar este Main.class, use el comando java, también debe especificar el classpath, el comando es el siguiente:

java -cp .;commons-logging-1.2.jar Main

Tenga en cuenta que el classpath entrante tiene dos partes: una es ., la otra es commons-logging-1.2.jar, separadas por ;. .Indica el directorio actual Sin esto ., la JVM no buscará Main.class en el directorio actual y reportará un error.

Si se ejecuta bajo Linuxo macOS, tenga en cuenta classpathque el delimitador no es ;, sino ::

java -cp .:commons-logging-1.2.jar Main

El resultado de la operación es el siguiente:

Mar 02, 2019 7:15:31 PM Main main
INFO: start...
Mar 02, 2019 7:15:31 PM Main main
WARNING: end.

Commons LoggingSe definen 6 niveles de registro:

FATAL
ERROR
WARNING
INFO
DEBUG
TRACE
默认级别是INFO。

Al usar Commons Logging, si hace referencia a Iniciar sesión en un método estático, normalmente define directamente una variable de tipo estático:

// 在静态方法中引用Log:
public class Main {
    
    
    static final Log log = LogFactory.getLog(Main.class);

    static void foo() {
    
    
        log.info("foo");
    }
}

Referenciado en un método de instancia Log, generalmente define una variable de instancia:

// 在实例方法中引用Log:
public class Person {
    
    
    protected final Log log = LogFactory.getLog(getClass());

    void foo() {
    
    
        log.info("foo");
    }
}

Nótese que la forma de obtener la variable de instancia log es LogFactory.getLog(getClass())que aunque también se puede usar LogFactory.getLog(Person.class), el método anterior tiene una gran ventaja, es decir, las subclases pueden usar directamente la instancia de log. Por ejemplo:

// 在子类中使用父类实例化的log:
public class Student extends Person {
    
    
    void bar() {
    
    
        log.info("bar");
    }
}

Debido a la naturaleza dinámica de la clase Java, el campo de registro obtenido por la subclase es en realidad equivalente LogFactory.getLog(Student.class), pero se hereda de la clase principal y no es necesario cambiar el código.

Además, Commons Loggingel método de registro, por ejemplo , proporciona un método sobrecargado muy útil info()además del estándar : , lo que simplifica aún más el registro de excepciones:info(String)info(String, Throwable)

try {
    
    
    ...
} catch (Exception e) {
    
    
    log.error("got exception!", e);
}

Utilice log.error(String, Throwable)la excepción de impresión.

resumen

Commons Logginges el módulo de registro más utilizado;

Commons LoggingLa API es muy simple;

Commons LoggingLos módulos de registro adicionales se pueden detectar y utilizar automáticamente.

Si ha ganado algo después de leer, también puede unirse a la discusión en la comunidad Knowledge Planet:

Supongo que te gusta

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