Language: Java
CLI/Utils
SLF4J was created to standardize logging in Java applications. Instead of tying code to a specific logging framework, SLF4J provides a facade that decouples logging API usage from the underlying logging implementation, enabling flexibility and consistency.
SLF4J (Simple Logging Facade for Java) is a logging abstraction that allows developers to plug in various logging frameworks such as Logback, Log4j, or java.util.logging without changing application code.
Add org.slf4j:slf4j-api dependency in pom.xml and include a binding like ch.qos.logback:logback-classicAdd implementation 'org.slf4j:slf4j-api:2.0.9' and implementation 'ch.qos.logback:logback-classic:1.4.11' in build.gradleSLF4J allows developers to write logging code independent of the logging framework. Logging levels like TRACE, DEBUG, INFO, WARN, and ERROR are supported, with support for parameterized messages and exception logging.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyApp {
private static final Logger logger = LoggerFactory.getLogger(MyApp.class);
public static void main(String[] args) {
logger.info("Application started");
}
}Initializes an SLF4J logger for the class and logs an INFO level message.
String user = "Alice";
logger.debug("User {} has logged in", user);Demonstrates parameterized logging to avoid string concatenation overhead.
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
logger.error("Error occurred: {}", e.getMessage(), e);
}Logs an exception with a message and stack trace.
logger.trace("Trace message");
logger.debug("Debug message");
logger.info("Info message");
logger.warn("Warning message");
logger.error("Error message");Demonstrates all standard logging levels in SLF4J.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>Configures Logback as the underlying logging framework for SLF4J, including log format and level.
Use parameterized logging to improve performance and readability.
Avoid hard-coded logging levels; configure them externally with the logging framework.
Log exceptions with stack traces for easier debugging.
Use class-specific loggers rather than a global logger for better context.
Prefer SLF4J facade over direct dependency on a logging implementation for flexibility.