SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统,如:log4j,logback。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志System。
pom.xml中只加入 slf4j-api,会报下面的错,说明没有日志实现绑定。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
所以slf4j需要实现日志系统,这里比如log4j。主要需要slf4j-api、log4j-api、log4j-core、log4j-slf4j-impl四个包。log4j-slf4j-impl的版本同log4j。
<properties>
<slf4j.version>1.7.28</slf4j.version>
<log4j.version>2.12.1</log4j.version>
</properties>
<dependencies>
<!-- slf4j的接口包以及对应日志框架的驱动包 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- 日志框架核心包与接口包 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<scope>runtime</scope>
<version>${log4j.version}</version>
</dependency>
<!--用于slf4j与log4j2桥接 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<scope>runtime</scope>
<version>${log4j.version}</version>
</dependency>
</dependencies>
代码中使用
Scala
object Test {
def main(args: Array[String]): Unit = {
val logger = LoggerFactory.getLogger(Test.getClass)
logger.info("========test========")
}
}
Java
public class Test {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(Test.class);
logger.info("========test========");
}
}