Log formatting configuration helps make log messages clear and easy to read. It organizes information like time, level, and message in a consistent way.
Log formatting configuration in Spring Boot
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{36} - %msg%nThis example shows a common pattern for console logs in Spring Boot.
Use placeholders like %d for date, %level for log level, %thread for thread name, %logger for class, and %msg for the message.
logging.pattern.console=%d{HH:mm:ss} %-5level - %msg%nlogging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - %msg%nlogging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%nThis Spring Boot app logs two messages with a custom format showing date, level, thread, logger, and message.
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class LogFormatExampleApplication { private static final Logger logger = LoggerFactory.getLogger(LogFormatExampleApplication.class); public static void main(String[] args) { SpringApplication.run(LogFormatExampleApplication.class, args); logger.info("Application started successfully."); logger.error("An error occurred."); } } # application.properties logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n
Use logging.pattern.console for console log format and logging.pattern.file for file logs.
Make sure your pattern includes %n at the end to add a new line after each log message.
Test your log format by running the app and checking the console or log files.
Log formatting makes logs easier to read and understand.
Use placeholders like %d, %level, %thread, %logger, and %msg to customize logs.
Configure patterns in application.properties for console and file outputs.
Practice
Solution
Step 1: Understand the role of log formatting
Log formatting controls how log messages appear, making them clearer and easier to read.Step 2: Identify the main goal of formatting
The main goal is to customize the log output for better readability, not to disable or encrypt logs.Final Answer:
To make logs easier to read and understand by customizing their appearance -> Option CQuick Check:
Log formatting = Customize log appearance [OK]
- Thinking log formatting disables logs
- Confusing formatting with log encryption
- Assuming formatting increases log file size
application.properties?Solution
Step 1: Identify the correct property key for console log pattern
The correct key islogging.pattern.consolein Spring Boot.Step 2: Check the pattern syntax
The pattern uses placeholders like %d for date, %-5level for log level, %logger{36} for logger name, and %msg for message, ending with %n for newline.Final Answer:
logging.pattern.console=%d{HH:mm:ss} %-5level %logger{36} - %msg%n -> Option BQuick Check:
Correct property and pattern syntax = logging.pattern.console=%d{HH:mm:ss} %-5level %logger{36} - %msg%n [OK]
- Using wrong property keys like logging.console.pattern
- Missing newline %n at the end
- Incorrect placeholder syntax
application.properties:
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{10} - %msg%n
What will be the output format of a log message?Solution
Step 1: Analyze the pattern placeholders
%d{yyyy-MM-dd HH:mm:ss} prints date/time, [%thread] prints thread in brackets, %-5level prints log level left-aligned in 5 spaces, %logger{10} prints logger name truncated to 10 chars, %msg prints the message, %n adds newline.Step 2: Match the pattern to the output options
2024-06-01 14:30:00 [main] INFO MyApp - Application started matches the exact order and format: date, thread in brackets, level padded, logger, dash, message.Final Answer:
2024-06-01 14:30:00 [main] INFO MyApp - Application started -> Option AQuick Check:
Pattern placeholders = Output format [OK]
- Mixing order of thread and date
- Ignoring padding in log level
- Confusing logger truncation
application.properties:
logging.pattern.file=%d{HH:mm:ss} %level %logger - %msg%n
But your log file shows no timestamps. What is the likely cause?Solution
Step 1: Verify property key correctness
The property keylogging.pattern.fileis correct for file log pattern in Spring Boot.Step 2: Consider logging system configuration
If the file appender is not properly set up, the pattern may be ignored, causing missing timestamps.Final Answer:
The logging system ignores the pattern if the file appender is not configured properly -> Option DQuick Check:
File appender config missing = pattern ignored [OK]
- Assuming %level causes timestamp issues
- Thinking property key is wrong
- Believing timestamp format is invalid
Solution
Step 1: Identify correct property keys for console and file patterns
Spring Boot useslogging.pattern.consoleandlogging.pattern.filekeys.Step 2: Check pattern details for console and file
Console pattern is simple with time, level, and message. File pattern is detailed with full timestamp, thread, level, logger, and message.Step 3: Match options to correct keys and patterns
logging.pattern.console=%d{HH:mm:ss} %-5level %msg%n logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n correctly sets simple console and detailed file patterns with proper keys and placeholders.Final Answer:
logging.pattern.console=%d{HH:mm:ss} %-5level %msg%n logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n -> Option AQuick Check:
Correct keys and patterns for console and file = logging.pattern.console=%d{HH:mm:ss} %-5level %msg%n logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n [OK]
- Swapping console and file property keys
- Using incorrect property keys like logging.console.pattern
- Using overly simple patterns for file logs
Ready to prove it?
Pass the test and this pattern moves unknown
