Directorio de artículos
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{
}
topic
Establézcalo como en la anotación order
; y logback.xml
agregue logger
una 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-ref
El ref
valor de debe ser coherente con appender
la name
propiedad 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.pattern
registro 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.getLogger
método . La representación entrante order
es 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.xml
agregando ._ logger
_ Debería name
hacer lo mismo order
. appender-ref
Configurando 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 name
es order
la ruta del paquete, y agregue y appender-ref
configure su ruta de impresión. Cuando name
el 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.
- El nombre del tema se establece mediante la anotación @Slf4j(topic = "order").
- El nombre común lo establece LoggerFactory.getLogger("order").
- 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 root
duplicarán de manera predeterminada con los registros de las etiquetas . Es decir logger
, la etiqueta heredará de la root
etiqueta por defecto. Si desea que el registro no se repita, puede establecerlo additivity
en false
.
<logger name="order" level="info" additivity="false"/>