Bird
Raised Fist0
Spring Bootframework~10 mins

Log formatting configuration in Spring Boot - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Log formatting configuration
Start Application
↓
Load Logging Config
↓
Apply Log Format Settings
↓
Log Event Occurs
↓
Format Log Message
↓
Output to Console/File
↓
Repeat for Next Log Event
This flow shows how Spring Boot loads logging configuration, applies formatting, and outputs logs.
Execution Sample
Spring Boot
logging.pattern.console=%d{HH:mm:ss} %-5level %logger{36} - %msg%n
logger.info("App started")
This config sets console log format; then a log message is printed using that format.
Execution Table
StepActionInput Log EventFormat AppliedOutput Log Message
1Load configN/A%d{HH:mm:ss} %-5level %logger{36} - %msg%nN/A
2Log event triggeredINFO, 'App started'Apply pattern14:23:01 INFO com.example.MyApp - App started
3Log event triggeredERROR, 'Error occurred'Apply pattern14:23:05 ERROR com.example.MyApp - Error occurred
4Log event triggeredDEBUG, 'Debug info'Apply pattern14:23:10 DEBUG com.example.MyApp - Debug info
5Application stopsN/AN/AN/A
💡 Application stops or logging ends
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
logging.pattern.consoleundefined%d{HH:mm:ss} %-5level %logger{36} - %msg%n%d{HH:mm:ss} %-5level %logger{36} - %msg%n%d{HH:mm:ss} %-5level %logger{36} - %msg%n%d{HH:mm:ss} %-5level %logger{36} - %msg%n
log messageN/AINFO, 'App started'ERROR, 'Error occurred'DEBUG, 'Debug info'N/A
formatted outputN/A14:23:01 INFO com.example.MyApp - App started14:23:05 ERROR com.example.MyApp - Error occurred14:23:10 DEBUG com.example.MyApp - Debug infoN/A
Key Moments - 2 Insights
Why does the log message show time and level before the message text?
Because the pattern '%d{HH:mm:ss} %-5level %logger{36} - %msg%n' formats logs to show time, level, logger name, then message as seen in execution_table rows 2-4.
What happens if the logging pattern is missing or incorrect?
Spring Boot uses a default format. The execution_table step 1 shows loading the pattern; if missing, default applies, so logs still print but differently.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3, what is the log level shown in the output?
AINFO
BERROR
CDEBUG
DWARN
💡 Hint
Check the 'Output Log Message' column at step 3 in execution_table
At which step does the logging pattern get loaded and applied?
AStep 4
BStep 2
CStep 1
DStep 5
💡 Hint
Look at the 'Action' column in execution_table where config is loaded
If the pattern changed to include thread name, how would the output change?
AThread name would appear before the message
BLog level would disappear
CTimestamp would be removed
DLogger name would be replaced by message
💡 Hint
Refer to how pattern controls output format in variable_tracker and execution_table
Concept Snapshot
Log formatting in Spring Boot uses patterns like '%d{HH:mm:ss} %-5level %logger{36} - %msg%n'.
This pattern controls how logs show time, level, logger, and message.
Configured in application.properties or YAML.
Logs use this format each time a log event happens.
Changing pattern changes log appearance immediately.
Full Transcript
In Spring Boot, log formatting configuration controls how log messages appear. The application loads a pattern from configuration files like application.properties. This pattern defines the order and style of log parts such as timestamp, log level, logger name, and message. When a log event happens, Spring Boot applies this pattern to format the message before outputting it to console or file. For example, a pattern '%d{HH:mm:ss} %-5level %logger{36} - %msg%n' shows time, level, logger, and message in that order. If the pattern changes, the log output changes accordingly. This process repeats for every log event until the application stops.

Practice

(1/5)
1. What is the purpose of configuring log formatting in a Spring Boot application?
easy
A. To disable logging completely
B. To increase the size of log files automatically
C. To make logs easier to read and understand by customizing their appearance
D. To encrypt log messages for security

Solution

  1. Step 1: Understand the role of log formatting

    Log formatting controls how log messages appear, making them clearer and easier to read.
  2. 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.
  3. Final Answer:

    To make logs easier to read and understand by customizing their appearance -> Option C
  4. Quick Check:

    Log formatting = Customize log appearance [OK]
Hint: Log formatting improves readability, not disables logging [OK]
Common Mistakes:
  • Thinking log formatting disables logs
  • Confusing formatting with log encryption
  • Assuming formatting increases log file size
2. Which of the following is the correct way to set a simple console log pattern in application.properties?
easy
A. console.logging.pattern=%date %level %logger %message
B. logging.pattern.console=%d{HH:mm:ss} %-5level %logger{36} - %msg%n
C. logging.console.pattern=%d{HH:mm:ss} %level %logger - %msg
D. logging.pattern=%d %level %logger %msg

Solution

  1. Step 1: Identify the correct property key for console log pattern

    The correct key is logging.pattern.console in Spring Boot.
  2. 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.
  3. Final Answer:

    logging.pattern.console=%d{HH:mm:ss} %-5level %logger{36} - %msg%n -> Option B
  4. Quick Check:

    Correct property and pattern syntax = logging.pattern.console=%d{HH:mm:ss} %-5level %logger{36} - %msg%n [OK]
Hint: Use logging.pattern.console for console logs in application.properties [OK]
Common Mistakes:
  • Using wrong property keys like logging.console.pattern
  • Missing newline %n at the end
  • Incorrect placeholder syntax
3. Given this configuration in 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?
medium
A. 2024-06-01 14:30:00 [main] INFO MyApp - Application started
B. [main] 2024-06-01 14:30:00 INFO MyApp - Application started
C. INFO 2024-06-01 14:30:00 [main] MyApp - Application started
D. MyApp INFO [main] 2024-06-01 14:30:00 - Application started

Solution

  1. 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.
  2. 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.
  3. Final Answer:

    2024-06-01 14:30:00 [main] INFO MyApp - Application started -> Option A
  4. Quick Check:

    Pattern placeholders = Output format [OK]
Hint: Match placeholders order exactly to output format [OK]
Common Mistakes:
  • Mixing order of thread and date
  • Ignoring padding in log level
  • Confusing logger truncation
4. You set this in 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?
medium
A. The timestamp format %d{HH:mm:ss} is invalid and causes logs to skip it
B. The pattern uses %level instead of %-5level, causing timestamp omission
C. The property key should be logging.pattern.file instead of logging.pattern.file
D. The logging system ignores the pattern if the file appender is not configured properly

Solution

  1. Step 1: Verify property key correctness

    The property key logging.pattern.file is correct for file log pattern in Spring Boot.
  2. Step 2: Consider logging system configuration

    If the file appender is not properly set up, the pattern may be ignored, causing missing timestamps.
  3. Final Answer:

    The logging system ignores the pattern if the file appender is not configured properly -> Option D
  4. Quick Check:

    File appender config missing = pattern ignored [OK]
Hint: Check file appender setup if pattern changes don't appear [OK]
Common Mistakes:
  • Assuming %level causes timestamp issues
  • Thinking property key is wrong
  • Believing timestamp format is invalid
5. You want to configure your Spring Boot app to log to both console and file with different formats. Which configuration snippet correctly sets a detailed file log pattern and a simple console pattern?
hard
A. 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
B. logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n logging.pattern.file=%d{HH:mm:ss} %-5level %msg%n
C. logging.pattern.console=%msg%n logging.pattern.file=%msg%n
D. logging.console.pattern=%d{HH:mm:ss} %level %msg logging.file.pattern=%d{yyyy-MM-dd} %level %logger %msg

Solution

  1. Step 1: Identify correct property keys for console and file patterns

    Spring Boot uses logging.pattern.console and logging.pattern.file keys.
  2. 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.
  3. 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.
  4. 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 A
  5. Quick 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]
Hint: Use logging.pattern.console and logging.pattern.file keys for different formats [OK]
Common Mistakes:
  • Swapping console and file property keys
  • Using incorrect property keys like logging.console.pattern
  • Using overly simple patterns for file logs
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard