[Experiencia de desarrollo] SpringBoot log SLF4j+Logback log modularization


        Si lee mi artículo, debe haber sido torturado al verificar los registros en el entorno de producción. Cuando no existe una herramienta de consulta de registros como ELK en el entorno de producción, la información del registro se puede ubicar más rápidamente a través de la modularización del registro y la distinción entre archivos. Por ejemplo: registro de pedidos, registro de solicitudes, registro de respuestas, registro de llamadas mutuas entre servicios, etc.

1. El registro de la clase actual se guarda en un archivo separado

Por ejemplo, el registro de orderService debe guardarse por separado.

@Service		
@Slf4j(topic = "order")
public class OrderServiceImpl{
    
    

}

topicEstablézcalo como         en la anotación order; y logback.xmlagregue loggeruna etiqueta en él, establezca el nivel de registro en info(el nivel de registro se establece solo).

<logger name="order" level="info">
    <appender-ref ref="api-order"/>
</logger>

        Establezca su posición de impresión appender. appender-refEl refvalor de debe ser coherente con appenderla namepropiedad de .

<appender name="order" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.path}/order.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 按天回滚  -->
        <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/order.%d{yyyy-MM-dd}.log</fileNamePattern>
        <!-- 日志最大的历史7天 -->
        <maxHistory>7</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>${log.pattern}</pattern>
    </encoder>
</appender>

        Como se describe en la configuración anterior, el registro del día actual se imprime en order.log, y el registro histórico se guarda por día, y se guarda el registro de un máximo de 7 días. El formato de impresión del log.patternregistro es (para el formato de impresión del registro, hay muchos en línea, puede configurarlo usted mismo )

2. Un registro específico está en un archivo específico

        Si desea registrar todo el proceso de la orden completa, no es factible imprimir en una clase, porque la lógica de esta orden puede escribirse en varias clases. Por lo tanto, es necesario imprimir varios lugares. El método de impresión es el siguiente:

private Logger orderlog = LoggerFactory.getLogger("order");

        Cree un objeto de registro con el LoggerFactory.getLoggermétodo . La representación entrante orderes un objeto de registro de impresión específico del pedido. En los pasos necesarios del pedido, como la creación de un pedido, la modificación del pedido y otros pasos, la impresión del registro se puede realizar de esta manera.

logback.xmlagregando         ._ logger_ Debería namehacer lo mismo order. appender-refConfigurando la ubicación de impresión del registro . Al igual que la configuración puerta a puerta appender, puede configurarla usted mismo.

<logger name="order" level="info">
    <appender-ref ref="order"/>
</logger>

3. Imprime según el módulo

        El módulo de pedido, el módulo de productos básicos, el módulo de usuario, etc. imprimen registros de acuerdo con el nombre del paquete fijo. Tome el módulo de pedido como ejemplo, agregue uno nuevo logger, que namees orderla ruta del paquete, y agregue y appender-refconfigure su ruta de impresión. Cuando nameel valor es classpath, el nombre de la tabla extraerá los registros de esta clase.

    <logger name="com.order.service" level="info">
        <appender-ref ref="order"/>
    </logger>

Resumir

        Toda la extracción se realiza con la etiqueta del registrador. Su nombre puede ser nombre de tema, nombre común, nombre de paquete, nombre de clase.

  1. El nombre del tema se establece mediante la anotación @Slf4j(topic = "order").
  2. El nombre común lo establece LoggerFactory.getLogger("order").
  3. El nombre del paquete y el nombre de la clase se pueden configurar en la etiqueta del registrador.

        Cada etiqueta de registrador puede establecer sus propios elementos básicos de registro. Generalmente, el nivel de registro de su propio sistema comercial es info. Si se refiere a otros marcos, el nivel de registro generalmente es advertir. Hay 5 niveles de inicio de sesión, a saber, TRACE < DEBUG < INFO < WARN < ERROR

        Los registros extraídos a un archivo solo se rootduplicarán de manera predeterminada con los registros de las etiquetas . Es decir logger, la etiqueta heredará de la rootetiqueta por defecto. Si desea que el registro no se repita, puede establecerlo additivityen false.

<logger name="order" level="info" additivity="false"/>

Supongo que te gusta

Origin blog.csdn.net/qq_30285985/article/details/120518978
Recomendado
Clasificación