Uso de registro de Slf4j

Sugerencia: aquí hay dos formas de usar los registros de SLF4J.

El primer método: imprimir registros en modo de código tradicional   

El segundo tipo: use la anotación @slf4j de lombok para imprimir registros

1. Imprima registros en modo de código tradicional

1. Introducir dependencias de registro relacionadas

Entre ellos, Slf4j solo hace el panel de registro y Log4j2 hace el núcleo de registro.

            <!-- log4j2适配slf4j包 -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-to-slf4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <!-- log4j2核心包(包含slf4j) -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <!-- log4j2核心包 -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>${log4j.version}</version>
            </dependency>

2. Establecer el archivo de configuración

El archivo YML está configurado de la siguiente manera:

# 日志配置
logging:
  config: classpath:logback/logback.xml
  file:
    name: D:/XX
  level:
    com.xx.xx: info
    com.xx.xx.xx: debug

logging.config : cuando se inicia el proyecto especificado, lea el archivo de configuración de registro logback.xml
logging.level : configure el registro y el nivel de registro de la aplicación en la ruta del paquete especificado.

file.name: especifica la ruta y el nombre de generación de registros, y la ruta abstracta se genera en el proyecto de forma predeterminada.

nivel de registro:

  1. Rastreo (seguimiento): generalmente se usa para rastrear el flujo de ejecución detallado del programa, como qué método se ejecuta y qué rama se ingresa durante el proceso de ejecución del programa. A través del proceso de ejecución del programa de rastreo, puede juzgar si el programa se está ejecutando de acuerdo con la lógica esperada
  2. depuración (depuración): este tipo de registro se usa a menudo para juzgar si hay una escena de error y, a menudo, registra la información detallada del código en ejecución, como la información de parámetros pasada por la llamada al método.
  3. info (mensaje): se utiliza para registrar información clave sobre la ejecución del programa. No registra todo el proceso de ejecución del programa como lo hace trace, ni registra información detallada para resolver problemas como la depuración. info registra la información de operación de todo el sistema, como qué etapa ha alcanzado el sistema y qué estado ha alcanzado
  4. warn (advertencia): se utiliza para registrar alguna información de advertencia. El mensaje de advertencia indica que el programa ha entrado en un estado especial en el que el programa puede continuar ejecutándose, pero no se recomienda dejar que el programa entre en este estado, porque este estado puede causar problemas con los resultados.
  5. error (error): Se utiliza para registrar la información del error en tiempo de ejecución, indicando que hay problemas que necesitan ser resueltos durante la ejecución del programa, muchas veces algunas excepciones. Al usar el registro de errores, generalmente se registrará el motivo detallado de la excepción.
     

La prioridad de registro de mayor a menor es seguimiento, depuración, información, advertencia, error. En términos relativos, se imprimirán cada vez menos registros.

La configuración de logback.xml es la siguiente:

Agregue una nueva carpeta de inicio de sesión en el directorio de recursos y cree un archivo de registro logback.xml en la carpeta

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
    <!-- 应用名称(项目名称) -->
    <property name="APP_NAME" value="log-test"/>
    <!--定义日志文件的存储地址,yml配置过这里就不用配置-->
    <property name="LOG_HOME" value="/logs/${APP_NAME}"/>
    <!-- 定义日志格式  -->
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%-30.30logger{30}] %msg%n"/>
    <!-- 高亮日志格式  -->
    <property name="HIGHLIGHT_PATTERN" value="%yellow(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %highlight(%-5level) %green(%logger{50}) - %highlight(%msg) %n"/>

    <!-- 控制台输出-高亮 -->
    <appender name="CONSOLE-WITH-HIGHLIGHT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${HIGHLIGHT_PATTERN}</pattern>
        </encoder>
    </appender>

    <!--文件输出的格式设置 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <!-- 如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false -->
        <prudent>false</prudent>

        <!-- 日志日常打印日志文件,yml配置过这里就不用配置,生成日志示例:/logs/log-test/info.log -->
        <file>${LOG_HOME}/info.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <!-- 压缩日志的路径和日志格式,示例:info-2023-05-26_21.log.zip,%d{yyyy-MM-dd}:表示文件名称包含日期,%i:表示当前是第几个压缩文件 -->
            <fileNamePattern>${LOG_HOME}/info-%d{yyyy-MM-dd}_%i.log.zip</fileNamePattern>

            <!-- 如果按天来回滚,则最大保存时间为7天,7天之前的都将被清理掉 -->
            <maxHistory>7</maxHistory>

            <!-- 日志总保存量为10GB,超过该日志总量的最早的日志压缩包会被清除 -->
            <totalSizeCap>10GB</totalSizeCap>

            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--文件达到 最大100MB时会被压缩和切割 -->
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>

        </rollingPolicy>

        <!-- 文件输出的日志 的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>

    </appender>

    <!-- 日志输出级别,yml配置过这里就不用配置 -->
    <logger name="com.xx.xx" level="INFO"/>
    <logger name="com.xx.*" level="DEBUG"/>
   <!-- 定义对应级别的appender -->
    <root level="INFO">
        <appender-ref ref="CONSOLE-WITH-HIGHLIGHT"/>
        <appender-ref ref="FILE"/>
    </root>

</configuration>

3. Utilice la impresión de registros

@SpringBootTest
class XX{
    //这里填写你对应的类对象
    public static final Logger LOGGER = LoggerFactory.getLogger(XX.class);
    // 快速入门
    @Test
    public void testSlf4j() throws Exception {
        
        // 日志输出
        LOGGER.error("error");
        LOGGER.warn("warn");
        LOGGER.info("info"); // 默认级别
        LOGGER.debug("debug");
        LOGGER.trace("trace");

        // 使用占位符输出日志信息
        String name = "rikka";
        Integer age = 10;
        LOGGER.info("用户:{},{}", rikka, age);


        // 将系统异常信息输出
        try {
            int i = 1 / 0;
        } catch (Exception e) {
            LOGGER.error("出现异常:", e);
        }
    }
}

2. Use la anotación @slf4j de lombok para imprimir registros

1. Introducir dependencias

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

2. Agregar complemento

3. Establecer el archivo de configuración

Simplemente copie las configuraciones yml y xml anteriores (método de código tradicional para imprimir registros) aquí.

4. Imprimir registro

@Slf4j
@RestController
public class TestLog{
    @GetMapping("/TestLog")
    public String queryList() {
        String s = "rikka";
        log.error(s);
        log.warn(s);
        log.info(s);
        log.debug(s);
        log.trace(s);
        return s;
    }

}


Resumir

El uso de lombok aumentará el grado de acoplamiento de código, y es necesario instalar complementos, no funcionará correctamente cuando se actualice el JDK, y otros miembros del equipo que requieran desarrollo colaborativo durante el proceso de desarrollo también usarán lombok simultáneamente. Si lo excluye cuando usa la sugerencia de lombok para empaquetar, hacerlo no afectará el uso de setters, getters y logs.

Supongo que te gusta

Origin blog.csdn.net/weixin_58403235/article/details/131242457
Recomendado
Clasificación