Spring Boot: ¿Cómo puedo establecer el nivel de registro con la aplicación.propiedades?


Esta es una pregunta muy simple, pero no puedo encontrar información.
(Tal vez mi conocimiento sobre Java frameworks es muy deficiente)

¿Cómo puedo establecer el nivel de registro con la aplicación.propiedades?
Y la ubicación del archivo de registro, etc?

Author: zeodtr, 2013-12-10

10 answers

Actualización: A partir de Spring Boot v1. 2.0.RELEASE, los ajustes en application.properties o application.yml sí se aplican. Consulte la sección Niveles de registro de la guía de referencia.

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR

Para versiones anteriores de Spring Boot no se puede. Simplemente tiene que usar la configuración normal para su marco de registro (log4j, logback) para eso. Agregue el archivo de configuración apropiado (log4j.xml o logback.xml) al directorio src/main/resources y configure a su gusto.

Puede habilitar el registro de depuración mediante especificar --debug al iniciar la aplicación desde la línea de comandos.

Spring Boot también proporciona un buen punto de partida para logback para configurar algunos valores predeterminados, colorear, etc. la base .archivo xml que simplemente puede incluir en su logback.archivo xml. (Esto también se recomienda desde el logback predeterminado .xml en Spring Boot.

<include resource="org/springframework/boot/logging/logback/base.xml"/>     
 221
Author: M. Deinum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-08 20:15:46

Puede hacerlo usando su aplicación.propiedad.

logging.level.=ERROR -> Establece el nivel de registro raíz en error
...
logging.level.=DEBUG -> Establece el nivel de registro raíz para DEPURAR

logging.file=${java.io.tmpdir}/myapp.log -> Establece la ruta absoluta del archivo de registro a TMPDIR / myapp.registro

Un conjunto de aplicaciones por defecto.propiedades con respecto al registro utilizando perfiles sería: aplicación.propiedades:

spring.application.name=<your app name here>
logging.level.=ERROR
logging.file=${java.io.tmpdir}/${spring.application.name}.log

Application-dev.propiedades:

logging.level.=DEBUG
logging.file=

Cuando se desarrolla dentro de su IDE favorito que acaba de añadir un -Dspring.profiles.active=dev como argumento VM para la configuración de ejecución/depuración de su aplicación.

Esto le dará solo el registro de errores en la producción y el registro de depuración durante el desarrollo SIN escribir la salida en un archivo de registro. Esto mejorará el rendimiento durante el desarrollo (y ahorrará unidades SSD algunas horas de funcionamiento ;) ).

 85
Author: Richard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-02 09:35:42

La forma correcta de establecer el nivel de registro root es usando la propiedad logging.level.root. Véase documentación , que ha sido actualizada desde que se formuló esta pregunta originalmente.

Ejemplo:

logging.level.root=WARN
 26
Author: The Gilbert Arenas Dagger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-16 19:09:23

Asegurándose de Dave Syer punta recibe un poco de amor, porque la adición de debug=true a la aplicación.de hecho, las propiedades habilitarán el registro de depuración.

 9
Author: oravecz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-04 14:02:13

Supongamos que su aplicación tiene el nombre del paquete como com.company.myproject. Luego puede establecer el nivel de registro para las clases dentro de su proyecto como se indica a continuación en la aplicación.propiedades archivos

Logging.level.com.company. myproject = DEBUG

logging.level.org.springframework.web = DEBUG y logging.level.org.hibernate = DEBUG establecerá el nivel de registro para las clases de Spring framework web y Hibernate solamente.

Para establecer la ubicación del archivo de registro use

Registro.file = / home / ubuntu / myproject.log

 8
Author: shaunthomas999,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-29 11:27:31

En caso de que desee utilizar un marco de registro diferente, log4j por ejemplo, encontré que el enfoque más fácil es deshabilitar spring boots propio registro e implementar el suyo propio. De esa manera puedo configurar cada nivel de registro dentro de un archivo, log4j.xml (en mi caso) eso es.

Para lograr esto, simplemente tiene que agregar esas líneas a su pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>

Probablemente ya tengas la primera dependencia y solo necesites las otras dos. Tenga en cuenta que este ejemplo solo cubre log4j.
Eso es todo, ahora está listo para configurar el registro para el arranque dentro de su archivo de configuración log4j!

 8
Author: atripes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-12 23:56:38

Si está en Spring Boot, puede agregar directamente las siguientes propiedades en la aplicación.properties archivo para establecer el nivel de registro, personalizar el patrón de registro y almacenar registros en el archivo externo.

Estos son diferentes niveles de registro y su orden desde mínimo

OFF

# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace

# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, its won't work.      
logging.file=D:/spring_app_log_file.log

# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

Por favor, pase a través de este enlace para personalizar su registro más vívidamente.

Https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html

 3
Author: Hardik Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-18 17:16:03

Para los registros: la documentación oficial , como para Spring Boot v1.2.0.LIBERACIÓN y resorte v4.1.3.RELEASE:

Si el único cambio que necesita hacer en el registro es establecer los niveles de varios registradores, puede hacerlo en la aplicación.propiedades usando el " registro.nivel " prefijo, por ejemplo

logging.level.org.springframework.web: DEBUG logging.level.org.hibernate: ERROR

También puede establecer la ubicación de un archivo para iniciar sesión (además de la consola) utilizando "logging.file".

Para configurar los ajustes más precisos de un sistema de registro, debe usar el formato de configuración nativo compatible con el sistema de registro en cuestión. Por defecto Spring Boot recoge la configuración nativa de su ubicación predeterminada para el sistema (por ejemplo, classpath:logback.xml para Logback), pero puede establecer la ubicación del archivo de configuración usando "logging.config" propiedad.

 2
Author: Eric Platon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-17 00:29:47

En caso de eclipse IDE y su proyecto es maven, recuerde limpiar y construir el proyecto para reflejar los cambios.

 1
Author: Sabarish Kumaran.V,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-11 10:06:22

Si desea establecer más detalles, agregue un nombre de archivo de configuración de registro "logback.xml " o " logback-spring.XML".

En su solicitud.archivo de propiedades, entrada como esta:

logging.config: classpath:logback-spring.xml

En la primavera loback.xml, entrada como esta:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/base.xml"/>

        <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">

            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>sys.log</file>

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


                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/system.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <appender name="BUSINESS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>TRACE</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>business.log</file>

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

                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/business.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <logger name="{project-package-name}" level="TRACE">
            <appender-ref ref="BUSINESS_APPENDER" />
        </logger>

        <root level="INFO">
            <appender-ref ref="ROOT_APPENDER" />
        </root>

    </configuration>
 1
Author: Sheldon Papa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-11 06:06:33