Spring Boot Logging: Difference between revisions
No edit summary |
|||
Line 72: | Line 72: | ||
playground.example: DEBUG | playground.example: DEBUG | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Setting a logging level on a specific logger configuration applies the same logging level on all logger subpackages. | |||
==File Output Configuration== | ==File Output Configuration== |
Revision as of 18:17, 9 November 2018
External
Internal
Overview
By default, a Spring Boot application that uses starters has a Logback log runtime: logback-classic-....jar is present in the application JAR. Logging is configured by default to write to the console at INFO level. log4j support is also available (log4j-api-2.11.1.jar, log4j-to-slf4j-2.11.1.jar). The following statements will generate INFO logs at the console without any additional configuration:
@Slf4j
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
log.info("in main()");
...
}
}
The default log output includes:
- Date and time with millisecond precision.
- Log level (ERROR, WARN, INFO, DEBUG or TRACE).
- Process ID
- A "---" separator.
- The thread name enclosed in square brackets and possibly truncated.
- The logger name, possibly abbreviated.
- The log message.
The default log configuration sends ERROR/WARN/INFO log messages to the console (standard out). DEBUG for core loggers (the container, Hibernate and Spring Boot) can be enabled globally for the application by specifying --debug on command line:
java -jar app.jar --debug
Alternatively:
debug: true
can be set in application.yml/application.properties. This generates a large quantity of logging, but it does not enable application-level DEBUG logging. If you need that, it will have to be configured specifically as shown below.
Similar to --debug, --trace can also be enabled.
application.yml Logging Configuration
Basic logging configuration can be applied directly in application.yml/application.properties. Root logging level can be controlled as such:
logging:
level:
root: WARN
Logger Level Configuration
Individual loggers can be configured with entries prefixed by "logging.level", followed by the name of the logger:
logging:
level:
playground:
example: DEBUG
Optionally, the long logger names can be collapsed on a single line, as follows. The above is equivalent with:
logging:
level:
playground.example: DEBUG
Setting a logging level on a specific logger configuration applies the same logging level on all logger subpackages.
File Output Configuration
logging:
path: /var/log/
file: my-file.log
More details about file output configuration can be found here: Spring Boot Logging - File Output.
logback.xml Logging Configuration
Better control over logging levels and format can be obtained by placing a Logback configuration file logback.xml in src/main/resources. This is an example of a simple logback.xml that will work:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="root" level="INFO"/>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Note that the default log formatting uses a fancier, color format, and the above configuration will overwrite the default log formatting.
If the same logger is configured both in application.yml and in logback.xml, application.yml configuration takes precendenc.