Usos de Spring Boot Commons Logging para un registro integral interno, pero deja abierta la implementación de registro subyacente. Se proporcionan configuraciones predeterminadas para Java Util Logging, Log4J2 y Volver a iniciar sesión. En cada caso, los administradores de registro están preconfigurados para usar la salida de la consola con la opción de enviarla a un archivo.
De forma predeterminada, si se usan Starters, se usa Logback para el registro. También se proporciona un enrutamiento de inicio de sesión adecuado para garantizar el funcionamiento correcto de las bibliotecas dependientes que utilizan Java Util Logging, Commons Logging, Log4J o SLF4J.
Formato del registrador
La salida del registro predeterminada en Spring Boot es similar a la siguiente ejemplo:
2022-10-20 12:40:11.311 INFO 16138 --- [ main] o.s.b.d.f.s.MyApplication : Iniciando MyApplication usando Java 1.8.0_345 en myhost con PID 16138 16138 (/opt/apps/myapp.jar iniciado por myuser en /opt/apps/) 2022-10-20 12:40:11.330 INFO 16138 --- [ main] o.s.b.d.f.s.MyApplication : no hay perfil activo establecido, volviendo a 1 perfil predeterminado: "predeterminado" 2022-10-20 12:40:13.056 INFO 16138 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat inicializado con puerto(s): 8080 (http) 2022-10-20 12:40:13.070 INFO 16138 --- [ main] o.apache.catalina.core.StandardService : Iniciando servicio [Tomcat] 2022-10-20 12:40:13.070 INFO 16138 --- [ main] org.apache.catalina.core.StandardEngine : Iniciando el motor Servlet: [Apache Tomcat/9.0.68] 2022-10-20 12:40:13.178 INFO 16138 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Inicializando WebApplicationContext incorporado de Sprin 2022-10-20 12:40:13.178 INFO 16138 --- [ main] w.s.c.ServletWebServerApplicationContext : WebApplicationContext raíz: inicialización completada en 1762 ms 2022-10-20 12:40:13.840 INFO 16138 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat se inició en los puertos: 8080 (http) con ruta de contexto '' 2022-10-20 12:40:13.850 INFO 16138 --- [ main] o.s.b.d.f.s.MyApplication : Started
Se generan los siguientes elementos:
Fecha y hora: precisión de milisegundos y clasificación sencilla.
Nivel de registro:
ERROR
,WARN
,INFO
,DEBUG
oTRACE
.ID de proceso.
Separador
---
para separar el comienzo de los mensajes de registro reales.Nombre de transmisión: adjunto entre corchetes (se puede truncar para la salida de la consola).
Nombre del administrador de registros: normalmente el nombre de la clase original (a menudo abreviado).
Mensaje de registro.
FATAL
nivel. Se muestra como
ERROR
.
Salida de la consola
En la configuración de registro predeterminada, los mensajes se reflejan en la
consola a medida que se escriben. De forma predeterminada, los mensajes en los niveles ERROR
, WARN
e INFO
se escriben en el registro. También puede habilitar el modo "depuración" ejecutando la
aplicación con el indicador --debug
.
$ java -jar myapp.jar --debug
debug=true
en el archivo application.properties
.
Si el modo de depuración está habilitado, se configura un conjunto de administradores de registro principales
(contenedor integrado, Hibernate y Spring Boot) para generar información adicional. Habilitar el modo de depuración
configura la aplicación para registrar todos los mensajes en el nivel DEBUG
.
También puede habilitar el modo "rastreo" ejecutando la aplicación con el de marca
--trace
(o trace=true
en el archivo application.properties
). Esto
le permite registrar registros de seguimiento para varios de los principales administradores de registros (el
contenedor integrado, la generación de esquemas de Hibernate y todo el portafolio de Spring).
Salida resaltada en color
Si el terminal admite ANSI, esto se utiliza para facilitar la lectura de la
salida en color. Puede instalar spring.output.ansi.enabled
en valor admitido para anular la detección automática.
La codificación de color se
configura utilizando la palabra de conversión %clr
. En su forma más simple, el convertidor colorea la
salida según el nivel de registro, como se muestra en el siguiente ejemplo:
%clr(%5p)
La siguiente tabla describe la correspondencia entre los niveles de registro y los colores:
Nivel | Color |
---|---|
|
Rojo |
|
Rojo |
|
Amarillo |
|
Verde |
|
Verde |
|
Verde |
También puede especificar el color o estilo que deseas utilizar, especificándolo como parámetro para la conversión. Por ejemplo, para hacer que el texto sea amarillo, use la siguiente configuración:
%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){amarillo}
Los siguientes colores y estilos son compatibles:
azul
cian
débil
verde
magenta
rojo
amarillo
Salida a un archivo
De forma predeterminada, Spring Boot registra solo en la consola y no escribe en
archivos de registro. Si necesita escribir en archivos de registro además de enviarlos a la consola, debe configurar
la propiedad logging.file.name
o logging.file.path
(por ejemplo, en el archivo
application.properties
).
La siguiente tabla muestra cómo las propiedades logging.*
se
pueden usar juntas:5
logging.file.name |
logging.file.path |
Ejemplo | Descripción |
---|---|---|---|
(ausente) |
(ausente) |
Muestra entradas de registro exclusivamente en la consola. |
|
Archivo específico |
(ausente) |
|
Escribe en el archivo especificado archivo de registro. Los nombres pueden ser una ubicación exacta o estar asociados con el directorio actual. |
(faltante) |
Directorio específico |
|
Escribe |
Los archivos de registro se rotan si alcanzan los 10 MB de tamaño y, como en el caso de la salida
de la consola, los mensajes en los niveles ERROR
, WARN
e INFO
se registran de
forma predeterminada.
logback.configurationFile
para Logback).
Rotación de archivos
Si está utilizando Logback, puede ajustar los parámetros de rotación de
registros utilizando el archivo application.properties
o
application.yaml
. Para todos los demás sistemas de registro, deberá configurar los parámetros de
rotación usted mismo (por ejemplo, si está utilizando Log4J2, puede agregar el archivo log4j2.xml
o
log4j2-spring.xml
).
Se admiten las siguientes propiedades de política de rotación:
Nombre | Descripción |
---|---|
|
Patrón de nombre de archivo utilizado para crear archivos de registro. |
|
Si el archivo de registro debe limpiarse cuando se inicia la aplicación. |
|
El tamaño máximo de un archivo de registro antes de archivarlo. |
|
Tamaño máximo del archivo de registro que se eliminará antes de la eliminación real. |
|
Número máximo de archivos en el archivo de registro que deben almacenarse (predeterminado 7). |
Niveles de registro
Todos los sistemas de registro compatibles pueden tener niveles de registro
establecidos a Environment
desde Spring (por ejemplo, application.properties
) usando
logging.level.<logger-name>=<level>
, donde level
es uno de los niveles,
incluido TRACE, DEBUG, INFO, WARN, ERROR, FATAL u OFF. Puede configurar el administrador de registro
root
usando logging.level.root
.
El siguiente ejemplo muestra posibles opciones de
registro en application.properties
:
logging.level.root=warn
logging.level.org.springframework.web=debug
logging .level.org.hibernate=error
logging:
level:
root: "warn"
org.springframework.web: "debug"
org.hibernate: "error"
También puede establecer niveles de registro utilizando variables de entorno. Por ejemplo, LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEB=DEBUG
establecerá org.springframework.web
en DEBUG
.
SPRING_APPLICATION_JSON
.
Grupos de registro
En muchos casos, es útil poder para agrupar administradores de registro relacionados para que puedan configurarse simultáneamente. Por ejemplo, puede cambiar con frecuencia los niveles de registro para todos los administradores de registro asociados con Tomcat, pero no podrá recordar fácilmente los paquetes de nivel superior.
Para ayudar Con esto, Spring Boot le permite definir grupos que inician
sesión en su Environment
para Spring. Por ejemplo, así es como puede definir un "grupo Tomcat"
agregándolo a su archivo application.properties
:
logging.group.tomcat=org.apache.catalina,org.apache.coyote,org.apache.tomcat
registro: grupo: tomcat:
"org.apache.catalina,org.apache.coyote,org.apache.tomcat"
Una vez definido, puede cambiar el nivel de todos los administradores de registro en un grupo con una línea:
logging.level.tomcat=trace
logging: nivel: tomcat: "trace"
Spring Boot contiene los siguientes grupos de registro predefinidos que se pueden usado de fábrica:
Nombre | Administradores de registros |
---|---|
web |
|
sql |
|
Uso de un interceptor de cierre de registros
Para liberar recursos de registro cuando La aplicación
se cierra, hay un interceptor de apagado que se ejecuta y borra el sistema de registro al salir de la JVM. Este
enlace de finalización se registra automáticamente a menos que su aplicación se implemente como un archivo war. Si
su aplicación tiene una jerarquía compleja de contextos, es posible que un interceptor de finalización no satisfaga
sus necesidades. Si no coincide, desactive el interceptor de finalización y considere las opciones proporcionadas
directamente por el sistema de registro subyacente. Por ejemplo, Logback proporciona selectores de contexto que
permiten crear cada registrador en su propio contexto. Puede utilizar la propiedad logging.register-shutdown-hook
para desactivar el enlace de apagado. Establecer el valor en false
deshabilita el registro. Puede
establecer esta propiedad en el archivo application.properties
o application.yaml
:
logging.register-shutdown-hook=false
logging: Register-shutdown-hook: false
Configuración de registro personalizada
Varios sistemas de registro pueden se activa habilitando
bibliotecas relevantes en el classpath y se configura específicamente pasando el archivo de configuración
apropiado
en la raíz del classpath o en la ubicación especificada por la siguiente propiedad Environment
para
Spring: logging.config
.
Puede forzar a Spring Boot a utilizar un sistema de registro específico utilizando la propiedad del sistema
org.springframework.boot.logging.LoggingSystem
. El valor debe ser el nombre completo de la clase de
implementación
LoggingSystem
. También puede deshabilitar completamente la configuración de registro de Spring Boot
usando el valor
none
.
ApplicationContext
,
no es posible controlar el registro a través de la anotación @PropertySources
en archivos Spring
con la
anotación @Configuration
. La única forma de cambiar el sistema de registro o desactivarlo por
completo
es a través de las propiedades del sistema.
Dependiendo del sistema de registro, se cargan los siguientes archivos:
Sistema de registro | Configuración |
---|---|
Logback |
|
Log4j2 |
|
JDK (Java Util Logging) |
|
-spring
para
la configuración de registro (por ejemplo, logback-spring.xml
, no logback.xml
). Si se
utilizan ubicaciones de configuración estándar, Spring no podrá controlar completamente la inicialización del
registro.
Para simplificar la configuración, algunas otras propiedades se mueven desde Environment
para
Spring a las propiedades del sistema, como se describe en el siguiente tabla:
Entorno Spring | Propiedad del sistema | Comentarios |
---|---|---|
|
|
La palabra de conversión utilizada al registrar excepciones. |
|
|
Si se define, se utiliza en la configuración de registro predeterminada. |
|
|
Si está definido, se utiliza en la configuración de registro predeterminada. |
|
|
Patrón de registro para usar con el consola (STDOUT). |
|
|
Patrón de anexo para formatear la fecha del registro. |
|
|
Codificación utilizada para registrar el registro con la salida de la consola. |
|
|
Patrón de registro a utilizar en el archivo (si la propiedad |
|
|
Codificación utilizada para registrar archivos (si la propiedad |
|
|
Formato utilizado al visualizar el nivel de registro (predeterminado |
|
|
Identificador de la corriente proceso (reconocido si es posible y si aún no está definido como una variable de entorno del sistema operativo). |
Si usa Logback, las siguientes propiedades también se pasan:
Entorno Spring | Propiedad del sistema | Comentarios |
---|---|---|
|
|
Plantilla para los nombres de los archivos de registro archivados (por defecto |
|
|
Indica si los archivos del archivo de registro deben borrarse al inicio. |
|
|
Tamaño máximo del archivo de registro. |
|
|
Tamaño total de las copias de seguridad de registros almacenados. |
|
|
El número máximo de archivos en el archivo de registro que deben almacenarse. |
Todos los sistemas de registro compatibles pueden acceder a las propiedades del sistema al analizar
sus archivos de configuración. Vea ejemplos de configuraciones predeterminadas en spring-boot.jar
:
Si necesita utilizar un marcador de posición en una propiedad de
registro,
debe ceñirse a la sintaxis de Spring Boot en lugar de la sintaxis del marco subyacente. En particular, si usa
Logback, debe usar :
como delimitador entre el nombre de la propiedad y su valor predeterminado, en
lugar de :-
.
Puede agregar contexto MDC y otro contenido especial a las líneas de
registro anulando solo LOG_LEVEL_PATTERN
(o logging.pattern.level
en Logback). Por
ejemplo, si usa logging.pattern.level=user:%X{user} %5p
, entonces el formato de registro
predeterminado
contiene una entrada MDC para "usuario" si existe, como se muestra en la siguiente ejemplo.
2019-08-30 12:30:04.031 user:someone INFO 22174 --- [ nio-8080-exec-0] demo.Controller Handling authenticated request
Extensiones de inicio de sesión
Spring Boot contiene una serie de extensiones para Logback que
pueden simplificar la configuración en profundidad. Puede utilizar estas extensiones en el archivo de
configuración
logback-spring.xml
.
logback.xml
se
carga demasiado pronto y no se pueden usar extensiones en él. Debe utilizar logback-spring.xml
o
definir la propiedad logging.config
.
ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:71 - no applicable action for [springProperty], current ElementPath is [[configuration][springProperty]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:71 - no applicable action for [springProfile], current
Configuración específica del perfil
La etiqueta <springProfile>
le permite
incluir o excluir opcionalmente secciones de configuración basadas en perfiles Spring activos. Las secciones de
perfil se admiten en cualquier parte del elemento <configuration>
. Utilice el atributo
name
para especificar qué perfil acepta la configuración. La etiqueta
<springProfile>
puede contener un nombre de perfil (por ejemplo, staging
) o una
expresión de perfil. Una expresión de perfil le permite expresar una lógica de perfil más compleja (por ejemplo,
producción y (eu-central | eu-west)
). La siguiente lista muestra tres perfiles de muestra:
<springProfile name="staging">
<!-- configuración que se activará si el perfil "staging" está activo -->
</springProfile>
<springProfile name="dev | staging">
<!-- la configuración que se activará si el perfil "dev" o "staging" está activo -->
</springProfile>
<springProfile name="!production">
<!-- configuración que se activará si el perfil "producción" está activo -->
</springProfile>
Propiedades del entorno
La etiqueta <springProperty>
le permite abrir propiedades
de Environment
en Spring para usar en Logback. Esto puede resultar útil si necesita acceder a
valores
del archivo application.properties
en su configuración de Logback. Esta etiqueta funciona igual que
la
etiqueta estándar <property>
en Logback. Sin embargo, en lugar de establecer un
value
directo, establece la propiedad source
(de Environment
). Si
necesita
almacenar una propiedad fuera del alcance de accesibilidad local
, puede utilizar el atributo scope
.
Si necesita un valor alternativo (en caso de que la propiedad no esté establecida en Environment
),
puede utilizar el atributo defaultValue
. El siguiente ejemplo muestra cómo exponer propiedades para
su
uso en Logback:
<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
<remoteHost>${fluentHost}</remoteHost>
...
</appender>
source
en el registro de kebab (por
ejemplo,
my.property-name
). Sin embargo, las propiedades se pueden agregar a Environment
usando
reglas flexibles.
GO TO FULL VERSION