目录
测试
maven依赖
xml
<dependencies>
<!-- SLF4J API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.13</version> <!-- 推荐使用最新稳定版 -->
</dependency>
<!-- Logback Classic (包含 logback-core) -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.14</version> <!-- 与 slf4j-api 兼容 -->
</dependency>
<!-- logback-core 是 logback-classic 的依赖,无需单独声明 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.4.14</version>
</dependency>
<!-- Log4j 2 API -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.23.1</version>
</dependency>
<!-- Log4j 2 Core 实现 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.23.1</version>
</dependency>
<!-- 如果你使用 SLF4J 门面,需要桥接 -->
<!-- 将 SLF4J 调用桥接到 Log4j 2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.23.1</version>
</dependency>
</dependencies>
logback.xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 按天滚动的日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>//Users/dwl/projects/maven-test/logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 日志级别控制 -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
测试主程序
java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
logger.info("应用启动中...");
logger.warn("这是一个警告");
logger.error("这是一个错误");
}
}
或者使用lombok
java
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Main {
public static void main(String[] args) {
log.info("应用启动中...");
log.warn("这是一个警告");
log.error("这是一个错误");
}
}
测试输出

arthas查看logger

总结使用
理解门面模式: https://blog.csdn.net/qq_26437925/article/details/148292560
以下几种:
- slf4j + logback: slf4j-api.jar + logback-classic.jar + logback-core.jar
- slf4j + log4j: slf4j-api.jar + slf4j-log412.jar + log4j.jar
- slf4j + jul: slf4j-api.jar + slf4j-jdk14.jar
- 也可以只用slf4j无日志实现:slf4j-api.jar + slf4j-nop.jar