Springboot最大的優(yōu)點(diǎn)是簡(jiǎn)便蝶涩。寫應(yīng)用程序需要的常規(guī)功能,它都集成進(jìn)來(lái),做了默認(rèn)配置蹲坷。寫日志這件事情直接就可以上手。
例如在springboot項(xiàng)目中的一段測(cè)試代碼中用日志輸出生成的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("-"));
}
}
因?yàn)槲业腟pringboot項(xiàng)目中使用了spring-boot-starter-web邑飒, 根據(jù) Springboot官方文檔循签,這個(gè)項(xiàng)目也就引入了 logback的jar包。
上面的代碼中可以引用到org.slf4j.Logger寫日志疙咸。
slf4j 和 loggback 是啥關(guān)系县匠?
關(guān)于Java的各種日志框架
實(shí)際上Java可用的日志框架和jar有很多,很容易搞蒙。例如 apache的Jakarta Commons Logging乞旦、 java自帶的Log工具Java Util Logging贼穆、log4j、logback等等兰粉。
實(shí)際上他們是有淵源的:
- 最早出來(lái)的一套是 Log4j故痊,還有人建議Sun公司把Log4j放到JDK中去,畢竟寫日志是基礎(chǔ)功能玖姑,但是Sun公司沒(méi)同意愕秫。
- 然后Sun公司按照Log4j的思路,自己搞了一套叫 Java Util Logging
- 然后Apache跳出來(lái)說(shuō)現(xiàn)在有兩套寫日志的框架了客峭,寫法不一樣豫领。我來(lái)搞個(gè)標(biāo)準(zhǔn)接口,程序員用標(biāo)準(zhǔn)接口就好了舔琅。Log4j和JUL作為標(biāo)準(zhǔn)接口的兩種實(shí)現(xiàn)等恐,可以隨時(shí)切換。這套標(biāo)準(zhǔn)接口叫 Jakarta Commons Logging
- 后來(lái)寫 Commons Logging的程序員Ceki Gülcü 從Apache離職备蚓,重新搞了一套接口 slf4j, 比起commons-logging說(shuō)是又簡(jiǎn)單又快课蔬。和老東家一樣支持Log4j和JUL做為接口實(shí)現(xiàn)。此外他還新加了一種實(shí)現(xiàn)叫 logback郊尝。
Ceki Gülcü
選哪個(gè)二跋?
當(dāng)然是logback, 既然springboot團(tuán)隊(duì)的高手都選了它,我們就不猶豫了流昏。 如果這個(gè)理由不充分的話扎即,只能用 logback自己的廣告語(yǔ)了,它可靠(Reliable)况凉、速度快(Fast)谚鄙。
Logback