📖 Scenario: You are building a simple Spring Boot application that logs messages at different levels to help developers understand what is happening inside the app.
🎯 Goal: Create a Spring Boot application with a logger. Configure a log level variable. Use the logger to print messages at TRACE, DEBUG, INFO, WARN, and ERROR levels. Finally, set the log level in the application properties.
📋 What You'll Learn
Create a Spring Boot application class with a logger
Add a variable to hold the current log level
Use the logger to log messages at TRACE, DEBUG, INFO, WARN, and ERROR levels
Set the log level in application.properties to INFO
💡 Why This Matters
🌍 Real World
Logging helps developers see what the application is doing and find problems quickly by showing messages of different importance.
💼 Career
Understanding logging and log levels is essential for debugging and monitoring applications in software development jobs.
Progress0 / 4 steps
1
Create Spring Boot application with logger
Create a Spring Boot application class named LoggingDemoApplication. Inside it, create a private static final logger called logger using LoggerFactory.getLogger(LoggingDemoApplication.class).
Spring Boot
Hint
Use LoggerFactory.getLogger(LoggingDemoApplication.class) to create the logger.
2
Add a log level variable
Inside the LoggingDemoApplication class, add a private static final String variable named LOG_LEVEL and set it to "INFO".
Spring Boot
Hint
Declare LOG_LEVEL as a private static final String and assign it "INFO".
3
Log messages at different levels
Inside the main method, after SpringApplication.run(...), add logger calls to log messages at TRACE, DEBUG, INFO, WARN, and ERROR levels. Use logger.trace("Trace message"), logger.debug("Debug message"), logger.info("Info message"), logger.warn("Warn message"), and logger.error("Error message") respectively.
Spring Boot
Hint
Use the logger variable to call trace, debug, info, warn, and error methods with messages.
4
Set log level in application.properties
Create a file named src/main/resources/application.properties. Inside it, add the line logging.level.root=INFO to set the root log level to INFO.
Spring Boot
Hint
This file controls Spring Boot logging settings. Setting logging.level.root=INFO means only INFO and higher messages show.
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
Step 1: Understand log level hierarchy
TRACE is the most detailed log level, showing fine-grained events.
Step 2: Compare with other levels
INFO, WARN, and ERROR show less detail and focus on general info or problems.
Final Answer:
TRACE -> Option D
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
Step 1: Recall Spring Boot logging property format
The correct property is logging.level.root to set root log level.
Step 2: Check option syntax
logging.level.root=WARN uses correct key and uppercase level, matching Spring Boot conventions.
Final Answer:
logging.level.root=WARN -> Option A
Quick Check:
Correct property key = logging.level.root [OK]
Hint: Use logging.level.root=LEVEL to set global log level [OK]
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
Step 1: Understand log level filtering
Setting level to INFO shows logs at INFO and higher severity (WARN, ERROR).
Step 2: Check which messages qualify
DEBUG is lower than INFO, so it is hidden; INFO and ERROR show.
Final Answer:
Info message, Error message -> Option A
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
Step 1: Check property correctness
If the package name is misspelled, the setting won't apply to the intended classes.
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.
Final Answer:
The package name is misspelled in the property -> Option C
Quick Check:
Correct package name is critical for log level settings [OK]
Hint: Check package spelling carefully in logging properties [OK]
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
Step 1: Set global log level to WARN
Set logging.level.root=WARN to limit logs globally to warnings and errors.
Step 2: Override package log level to TRACE
Set logging.level.com.example.repository=TRACE to get detailed logs only for that package.
Final Answer:
logging.level.root=WARN
logging.level.com.example.repository=TRACE -> Option B
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 unknownstrongwhile earning +1 Grip toward your certificate.