26.5 Custom log configuration
The various logging systems can be activated by including the appropriate libraries on the classpath, and further customized by providing a suitable configuration file in the root of the classpath, or in a location specified by the Spring Environment
property logging.config
.
You can force Spring Boot to use a particular logging system 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
.
|
Note |
Since logging is initialized before the ApplicationContext is created, it isn’t possible to control logging from @PropertySources in Spring @Configuration files. System properties and the conventional Spring Boot external configuration files work just fine.) |
Depending on your logging system, the following files will be loaded:
Logging System |
Customization |
Logback |
logback-spring.xml , logback-spring.groovy , logback.xml or logback.groovy |
Log4j2 |
log4j2-spring.xml or log4j2.xml |
JDK (Java Util Logging) |
logging.properties |
|
Note |
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. |
|
Warning |
There are known classloading issues with Java Util Logging that cause problems when running from an ‘executable jar’. We recommend that you avoid it if at all possible. |
To help with the customization some other properties are transferred from the Spring Environment
to System properties:
Spring Environment |
System Property |
Comments |
logging.exception-conversion-word |
LOG_EXCEPTION_CONVERSION_WORD |
The conversion word that’s used when logging exceptions. |
logging.file |
LOG_FILE |
Used in default log configuration if defined. |
logging.path |
LOG_PATH |
Used in default log configuration if defined. |
logging.pattern.console |
CONSOLE_LOG_PATTERN |
The log pattern to use on the console (stdout). (Only supported with the default logback setup.) |
logging.pattern.file |
FILE_LOG_PATTERN |
The log pattern to use in a file (if LOG_FILE enabled). (Only supported with the default logback setup.) |
logging.pattern.level |
LOG_LEVEL_PATTERN |
The format to use to render the log level (default %5p ). (Only supported with the default logback setup.) |
PID |
PID |
The current process ID (discovered if possible and when not already defined as an OS environment variable). |
All the logging systems supported can consult System properties when parsing their configuration files. See the default configurations in spring-boot.jar
for examples.
|
Tip |
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’re using Logback, you should use : as the delimiter between a property name and its default value and not :- . |
|
Tip |
You can add MDC and other ad-hoc content to log lines by overriding only the LOG_LEVEL_PATTERN (or logging.pattern.level with Logback). For example, if you use logging.pattern.level=user:%X{user} %5p then the default log format will contain an MDC entry for "user" if it exists, e.g. |