Bird
Raised Fist0
Spring Bootframework~5 mins

Log levels (TRACE, DEBUG, INFO, WARN, ERROR) in Spring Boot

Choose your learning style10 modes available
Introduction

Log levels help you control what messages your application writes to logs. They let you see detailed info when debugging and less noise in normal use.

When you want to see very detailed messages to find tricky bugs (TRACE).
When you want to check detailed info during development (DEBUG).
When you want to log general information about app progress (INFO).
When you want to warn about possible problems that don't stop the app (WARN).
When you want to log serious errors that need fixing (ERROR).
Syntax
Spring Boot
logger.trace("message");
logger.debug("message");
logger.info("message");
logger.warn("message");
logger.error("message");

Use the logger object from a logging framework like SLF4J or Logback.

Choose the level based on how important or detailed the message is.

Examples
TRACE level logs very detailed info, useful for deep debugging.
Spring Boot
logger.trace("Starting detailed trace of method execution");
DEBUG level logs useful info for developers during development.
Spring Boot
logger.debug("User input received: " + userInput);
INFO level logs general app events that are normal but important.
Spring Boot
logger.info("Application started successfully");
WARN level logs potential problems that should be checked.
Spring Boot
logger.warn("Disk space is running low");
ERROR level logs serious problems that need immediate attention.
Spring Boot
logger.error("Failed to connect to database", exception);
Sample Program

This Spring Boot app logs messages at all levels when it starts. You can see how each level is used for different importance.

Spring Boot
package com.example.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {

    private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Override
    public void run(String... args) {
        logger.trace("Trace: Starting application run method");
        logger.debug("Debug: Initializing variables");
        logger.info("Info: Application is running");
        logger.warn("Warn: Low memory warning");
        logger.error("Error: Unable to load configuration file");
    }
}
OutputSuccess
Important Notes

Log output depends on your logging configuration. By default, TRACE and DEBUG may not show unless enabled.

Use INFO or higher levels in production to avoid too much log noise.

Logging exceptions with error level helps find problems quickly.

Summary

Log levels control how much detail you see in logs.

Use TRACE and DEBUG for development and troubleshooting.

Use INFO, WARN, and ERROR for normal and problem situations.

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