Aprendizaje del marco de registro de inicio de sesión (1) Introducción al inicio de sesión

Primero, permítanme hablar sobre mis sentimientos sobre el marco de registro. Mucha gente tiene slf4j-api slf4j-simple
logback-core logbak-classic log4j logj42. Hay muchos marcos de registro. El marco de registro advierte de error al generar varias consolas y, a veces, el El registro no se puede generar. La razón es que todos piensan que el marco de registro no es muy importante. Siempre que pueda generar salida, se siente similar a sout. Yo pienso lo mismo... Si hay un problema, copie dos log4j.properties y log4j. xml en Baidu. , continúe con cv la próxima vez si hay algún problema. Ya no quiero ser así. Quiero aprender el marco de registro con cuidado. Espero que todos puedan aprenderlo también.

Página web oficial


El sitio web oficial https://logback.qos.ch/manual/introduction.html es siempre el mejor lugar para aprender.
Puedes ver que el sitio web oficial está dividido en 13 capítulos, creo que está casi terminado después de leerlo.

Introducir experto

Insertar descripción de la imagen aquí
requisitos, indicando que esto es necesario. Dijo que el módulo logback-classic requiere slf4j-api.jar y logback-core.jar así como logback-classic.jar. Entonces, ¿necesitamos presentar estos 3 frascos?
Consulte el siguiente párrafo, que dice que slf4j-api.jar en realidad está en logback-*jar. Así que sólo nos falta introducir 2 tarros. (Siento que slf4j-api es la interfaz y logback es la clase de implementación)

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

En este momento, consulte nuestra introducción específica a través de la idea: ¿
logback-classic incluye logback-core y slf4j-api
Significa que solo presento logback-classic? Pruebe más tarde.

HolaMundo1

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld1 {
    
    
    public static void main(String[] args) {
    
    
        Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld1");
        logger.debug("Hello world.");
    }
}

En este momento, no he configurado xml y las propiedades pueden imprimir registros por sí mismas.
Insertar descripción de la imagen aquíDespués de las pruebas, sólo el paquete clásico está bien. Por supuesto, debe prestar atención a la versión, en caso de que la versión superior y la versión inferior no tengan paquetes principales.
Eche un vistazo a la documentación del sitio web oficial para obtener la descripción de esta demostración.

La clase HelloWorld1 está definida en el paquete Chapters.Introduction. Comienza importando las clases Logger y LoggerFactory definidas en la API SLF4J, específicamente dentro del paquete org.slf4j.

El origen del registrador se menciona aquí. Al presentar la API slf4j, tenga en cuenta que la API de registro no se presenta aquí.
Esto es lo que mencioné antes: slf4j es la interfaz y logback es la clase de implementación.
importar org.slf4j.Logger;
importar org.slf4j.LoggerFactory;

En la primera línea del método main(), a la variable denominada logger se le asigna una instancia de Logger recuperada invocando el método estático getLogger de la clase LoggerFactory. Este registrador se denomina "chapters.introduction.HelloWorld1". El método principal procede a llamar al método de depuración de este registrador pasando "Hola mundo" como argumento. Decimos que el método principal contiene una declaración de registro de nivel DEBUG con el mensaje "Hola mundo".

Este pasaje significa que Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld1"); proviene del método estático y genera hola mundo a través de la depuración.

Tenga en cuenta que el ejemplo anterior no hace referencia a ninguna clase de registro. En la mayoría de los casos, en lo que respecta al registro, sus clases sólo necesitarán importar clases SLF4J. Por lo tanto, la gran mayoría, si no todas, de sus clases utilizarán la API SLF4J y no serán conscientes de la existencia del inicio de sesión.

O el slf4j que mencioné anteriormente es una interfaz y la implementación del inicio de sesión está oculta.
En este momento, si se trata de un registro de salida simple, ya ha satisfecho las necesidades básicas.
Pero las necesidades son muy extrañas, hay conjuntos de ensayos de ocho partes y la capa inferior del marco debe estudiarse a fondo y aún debe seguir aprendiendo.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;

public class HelloWorld2 {
    
    

  public static void main(String[] args) {
    
    
    Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld2");
    logger.debug("Hello world.");

    // print internal state
    LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
    StatusPrinter.print(lc);
  }
}

Insertar descripción de la imagen aquí

Logback explica que al no poder encontrar los archivos de configuración logback-test.xml y logback.xml (que se analizan más adelante), se configuró usando su política predeterminada, que es un ConsoleAppender básico. Un Appender es una clase que puede verse como un destino de salida. Existen anexos para muchos destinos diferentes, incluidos la consola, archivos, Syslog, TCP Sockets, JMS y muchos más. Los usuarios también pueden crear fácilmente sus propios Appenders según corresponda a su situación específica.

Al imprimir el registro, puede ver que no se encontró logback-test.xml, logback.groovy, logback.xml y que se usó la configuración predeterminada ConsoleAppender.
El apéndice puede verse como

Tenga en cuenta que en caso de errores, el inicio de sesión imprimirá automáticamente su estado interno en la consola.

Los ejemplos anteriores son bastante simples. El inicio de sesión real en una aplicación más grande no sería tan diferente. El patrón general para registrar declaraciones no cambiaría. Sólo el proceso de configuración sería diferente. Sin embargo, probablemente desee personalizar o configurar el inicio de sesión según sus necesidades. La configuración del inicio de sesión se tratará en capítulos posteriores.

Tenga en cuenta que en el ejemplo anterior le hemos indicado a Logback que imprima su estado interno invocando el método StatusPrinter.print(). La información de estado interno de Logback puede resultar muy útil para diagnosticar problemas relacionados con Logback.

Aquí hay una lista de los tres pasos necesarios para permitir el inicio de sesión en su aplicación.
1.Configure el entorno de inicio de sesión. Puedes hacerlo de varias formas más o menos sofisticadas. Más sobre esto más adelante.
2. En cada clase donde desee realizar el registro, recupere una instancia de Logger invocando el método getLogger() de la clase org.slf4j.LoggerFactory, pasando el nombre de la clase actual o la clase misma como parámetro.
3.Utilice esta instancia de registrador invocando sus métodos de impresión, es decir, los métodos debug(), info(), warn() y error(). Esto producirá una salida de registro en los appenders configurados.

Dije 3 puntos:
1. Configurar el entorno de inicio de sesión significa introducir jar y escribir xml
2.org.slf4j.LoggerFactory método getLogger() de la clase
3.log.debug log.info para imprimir
Este es el más simple. Continuar estudiando.

Supongo que te gusta

Origin blog.csdn.net/cclovezbf/article/details/132160992
Recomendado
Clasificación