Bird
Raised Fist0
Spring Bootframework~10 mins

Log levels (TRACE, DEBUG, INFO, WARN, ERROR) in Spring Boot - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Log levels (TRACE, DEBUG, INFO, WARN, ERROR)
Start Application
↓
Log Event Occurs
↓
Check Log Level Setting
↓
Is Event Level >= Configured Level?
No→Skip Log
↓
Write Log Message
↓
Continue Application Execution
The application checks if the event's log level meets or exceeds the configured level. If yes, it writes the log message; otherwise, it skips logging.
Execution Sample
Spring Boot
logger.trace("Trace message");
logger.debug("Debug message");
logger.info("Info message");
logger.warn("Warn message");
logger.error("Error message");
Logs messages at different levels; only messages at or above the configured level are output.
Execution Table
StepLog CallConfigured LevelIs Log Level >= Configured?ActionOutput
1TRACEINFONoSkip LogNo output
2DEBUGINFONoSkip LogNo output
3INFOINFOYesWrite LogInfo message
4WARNINFOYesWrite LogWarn message
5ERRORINFOYesWrite LogError message
6----End of logging calls
💡 Logging stops after all log calls are checked against the configured level.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5Final
Configured LevelINFOINFOINFOINFOINFOINFOINFO
Current Log Call-TRACEDEBUGINFOWARNERROR-
Log Output[][][]["Info message"]["Info message", "Warn message"]["Info message", "Warn message", "Error message"]["Info message", "Warn message", "Error message"]
Key Moments - 2 Insights
Why are TRACE and DEBUG messages not shown when the configured level is INFO?
Because TRACE and DEBUG are lower priority than INFO, the check in the execution_table rows 1 and 2 shows 'No' for 'Is Log Level >= Configured?', so these messages are skipped.
What happens if the configured level is set to ERROR?
Only ERROR messages will be logged because all other levels are lower priority. This is similar to the logic in the execution_table but with a higher configured level, causing more skips.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the output after step 3?
A["Debug message"]
B["Info message"]
C[]
D["Trace message"]
💡 Hint
Check the 'Output' column at step 3 in the execution_table.
At which step does the log level first meet the configured level?
AStep 3
BStep 2
CStep 1
DStep 5
💡 Hint
Look at the 'Is Log Level >= Configured?' column in the execution_table.
If the configured level changes to DEBUG, which log calls will be output?
AINFO, WARN, ERROR
BTRACE, DEBUG, INFO, WARN, ERROR
CDEBUG, INFO, WARN, ERROR
DWARN, ERROR
💡 Hint
Compare the configured level in variable_tracker and think which levels are >= DEBUG.
Concept Snapshot
Log levels control which messages are recorded.
Levels in order: TRACE < DEBUG < INFO < WARN < ERROR.
Only messages at or above the configured level are logged.
Lower levels are skipped to reduce noise.
Configure level to control log detail and performance.
Full Transcript
In Spring Boot, log levels determine which messages are recorded. When the application runs, each log call is checked against the configured log level. If the message's level is equal or higher priority than the configured level, it is logged; otherwise, it is skipped. For example, if the configured level is INFO, TRACE and DEBUG messages are ignored, but INFO, WARN, and ERROR messages are shown. This helps control how much detail appears in logs, balancing information and noise. Changing the configured level changes which messages appear.

Practice

(1/5)
1. Which log level in Spring Boot shows the most detailed information, typically used for diagnosing problems during development?
easy
A. ERROR
B. INFO
C. WARN
D. TRACE

Solution

  1. Step 1: Understand log level hierarchy

    TRACE is the most detailed log level, showing fine-grained events.
  2. Step 2: Compare with other levels

    INFO, WARN, and ERROR show less detail and focus on general info or problems.
  3. Final Answer:

    TRACE -> Option D
  4. Quick Check:

    Most detailed log = TRACE [OK]
Hint: TRACE logs show the tiniest details for debugging [OK]
Common Mistakes:
  • Confusing INFO with TRACE as most detailed
  • Thinking ERROR shows all details
  • Assuming WARN is more detailed than DEBUG
2. Which of the following is the correct way to set the log level to WARN in application.properties for Spring Boot?
easy
A. logging.level.root=WARN
B. log.level=WARN
C. logging.level=WARN
D. logging.root.level=warn

Solution

  1. Step 1: Recall Spring Boot logging property format

    The correct property is logging.level.root to set root log level.
  2. Step 2: Check option syntax

    logging.level.root=WARN uses correct key and uppercase level, matching Spring Boot conventions.
  3. Final Answer:

    logging.level.root=WARN -> Option A
  4. Quick Check:

    Correct property key = logging.level.root [OK]
Hint: Use logging.level.root=LEVEL to set global log level [OK]
Common Mistakes:
  • Using log.level instead of logging.level.root
  • Incorrect property key like logging.root.level
  • Using lowercase level names incorrectly
3. Given this Spring Boot code snippet:
logger.debug("Debug message");
logger.info("Info message");
logger.error("Error message");

If the log level is set to INFO, which messages will appear in the logs?
medium
A. Info message, Error message
B. Only Error message
C. Debug message, Info message, Error message
D. Only Debug message

Solution

  1. Step 1: Understand log level filtering

    Setting level to INFO shows logs at INFO and higher severity (WARN, ERROR).
  2. Step 2: Check which messages qualify

    DEBUG is lower than INFO, so it is hidden; INFO and ERROR show.
  3. Final Answer:

    Info message, Error message -> Option A
  4. Quick Check:

    INFO level shows INFO and ERROR logs [OK]
Hint: Logs show messages at set level and above [OK]
Common Mistakes:
  • Assuming DEBUG logs show at INFO level
  • Thinking ERROR logs are hidden at INFO level
  • Confusing INFO with DEBUG level
4. You set logging.level.com.example=DEBUG in application.properties, but DEBUG messages from com.example.service do not appear. What is the most likely cause?
medium
A. DEBUG level is not supported in Spring Boot
B. The root log level is set higher than DEBUG, blocking DEBUG logs
C. The package name is misspelled in the property
D. You must restart the application to apply log level changes

Solution

  1. Step 1: Check property correctness

    If the package name is misspelled, the setting won't apply to the intended classes.
  2. Step 2: Evaluate other options

    DEBUG is supported; root level does not block specific package settings; restart is usually required but not the main cause.
  3. Final Answer:

    The package name is misspelled in the property -> Option C
  4. Quick Check:

    Correct package name is critical for log level settings [OK]
Hint: Check package spelling carefully in logging properties [OK]
Common Mistakes:
  • Assuming root level overrides package level always
  • Believing DEBUG is unsupported
  • Ignoring typos in package names
5. You want to see detailed logs only for the com.example.repository package but keep the rest of the application logging at WARN level. Which application.properties configuration achieves this?
hard
A. logging.level.root=TRACE logging.level.com.example.repository=WARN
B. logging.level.root=WARN logging.level.com.example.repository=TRACE
C. logging.level.root=INFO logging.level.com.example.repository=ERROR
D. logging.level.root=DEBUG logging.level.com.example.repository=INFO

Solution

  1. Step 1: Set global log level to WARN

    Set logging.level.root=WARN to limit logs globally to warnings and errors.
  2. Step 2: Override package log level to TRACE

    Set logging.level.com.example.repository=TRACE to get detailed logs only for that package.
  3. Final Answer:

    logging.level.root=WARN logging.level.com.example.repository=TRACE -> Option B
  4. Quick Check:

    Global WARN + package TRACE = detailed logs only there [OK]
Hint: Set root level high, override package level low for details [OK]
Common Mistakes:
  • Setting root level too low, flooding logs
  • Overriding package with higher level than root
  • Confusing package and root property keys
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