Springboot最大的优点是简便。写应用程序需要的常规功能,它都集成进来,做了默认配置。写日志这件事情直接就可以上手。
例如在springboot项目中的一段测试代码中用日志输出生成的UUID
package com.jpin.wateraffair.utils;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class UUIDGeneratorTest {
private static final Logger LOGGER = LoggerFactory.getLogger(UUIDGenerator.class);
@Test
public void genUUID() {
String uuid = UUIDGenerator.genUUID();
Assert.assertNotNull(uuid);
LOGGER.info("uuid:{}", uuid);
Assert.assertFalse(uuid.contains("-"));
}
}
因为我的Springboot项目中使用了spring-boot-starter-web, 根据 Springboot官方文档,这个项目也就引入了 logback的jar包。
上面的代码中可以引用到org.slf4j.Logger写日志。
slf4j 和 loggback 是啥关系?
关于Java的各种日志框架
实际上Java可用的日志框架和jar有很多,很容易搞蒙。例如 apache的Jakarta Commons Logging、 java自带的Log工具Java Util Logging、log4j、logback等等。
实际上他们是有渊源的:
- 最早出来的一套是 Log4j,还有人建议Sun公司把Log4j放到JDK中去,毕竟写日志是基础功能,但是Sun公司没同意。
- 然后Sun公司按照Log4j的思路,自己搞了一套叫 Java Util Logging
- 然后Apache跳出来说现在有两套写日志的框架了,写法不一样。我来搞个标准接口,程序员用标准接口就好了。Log4j和JUL作为标准接口的两种实现,可以随时切换。这套标准接口叫 Jakarta Commons Logging
- 后来写 Commons Logging的程序员Ceki Gülcü 从Apache离职,重新搞了一套接口 slf4j, 比起commons-logging说是又简单又快。和老东家一样支持Log4j和JUL做为接口实现。此外他还新加了一种实现叫 logback。
Ceki Gülcü
选哪个?
当然是logback, 既然springboot团队的高手都选了它,我们就不犹豫了。 如果这个理由不充分的话,只能用 logback自己的广告语了,它可靠(Reliable)、速度快(Fast)。
Logback
网友评论