Custom Log Configuration
The various logging systems can be activated by including the appropriate libraries on the classpath and can be further customized by providing a suitable configuration file in the root of the classpath or in a location specified by the following Spring Environment
property: logging.config
.
You can force Spring Boot to use a particular logging system by using the org.springframework.boot.logging.LoggingSystem
system property.
The value should be the fully qualified class name of a LoggingSystem
implementation.
You can also disable Spring Boot’s logging configuration entirely by using a value of none
.
Since logging is initialized before the ApplicationContext is created, it is not possible to control logging from @PropertySources in Spring @Configuration files.
The only way to change the logging system or disable it entirely is through System properties.
|
Depending on your logging system, the following files are loaded:
Logging System | Customization |
---|---|
Logback |
|
Log4j2 |
|
JDK (Java Util Logging) |
|
When possible, we recommend that you use the -spring variants for your logging configuration (for example, logback-spring.xml rather than logback.xml ).
If you use standard configuration locations, Spring cannot completely control log initialization.
|
There are known classloading issues with Java Util Logging that cause problems when running from an 'executable jar'. We recommend that you avoid it when running from an 'executable jar' if at all possible. |
To help with the customization, some other properties are transferred from the Spring Environment
to System properties, as described in the following table:
Spring Environment | System Property | Comments |
---|---|---|
|
|
The conversion word used when logging exceptions. |
|
|
If defined, it is used in the default log configuration. |
|
|
If defined, it is used in the default log configuration. |
|
|
The log pattern to use on the console (stdout). |
|
|
Appender pattern for log date format. |
|
|
The charset to use for console logging. |
|
|
The log level threshold to use for console logging. |
|
|
The log pattern to use in a file (if |
|
|
The charset to use for file logging (if |
|
|
The log level threshold to use for file logging. |
|
|
The format to use when rendering the log level (default |
|
|
The current process ID (discovered if possible and when not already defined as an OS environment variable). |
If you use Logback, the following properties are also transferred:
Spring Environment | System Property | Comments |
---|---|---|
|
|
Pattern for rolled-over log file names (default |
|
|
Whether to clean the archive log files on startup. |
|
|
Maximum log file size. |
|
|
Total size of log backups to be kept. |
|
|
Maximum number of archive log files to keep. |
All the supported logging systems can consult System properties when parsing their configuration files.
See the default configurations in spring-boot.jar
for examples:
If you want to use a placeholder in a logging property, you should use Spring Boot’s syntax and not the syntax of the underlying framework.
Notably, if you use Logback, you should use |
You can add MDC and other ad-hoc content to log lines by overriding only the 2019-08-30 12:30:04.031 user:someone INFO 22174 --- [ nio-8080-exec-0] demo.Controller Handling authenticated request |